• ke9案例三:页面提交文件,我服务器端接收


    案例三:页面提交文件,我服务器端接收

    ProcessFile.java

    1value = "/process-file"

    2获取邮件消息的所有部分part--Collection parts=request.getParts();

    3遍历每一个part

    4之后可以打印头文件等String header=part.getHeader("content-disposition");

     5打印文件名String fileName=header.substring(header.lastIndexOf("=")+2,header.lastIndexOf("\""));

    ServletContext context =request.getServletContext();:获取ServletContext对象,用于获取服务器的上下文。

    String savePath=context.getRealPath("/file");:获取服务器上 "/file" 的实际路径。物理地址

    savePath += File.separator+fileName;:在路径中添加文件名。window的是反斜杠,File调用seoarator

    9part.write(savePath);写到路径

    part也有这个Header方法

    不知道我们的文本放在哪里的??part.write(savePath);??怎么写进去

    运行后就会文件放在我们的

    1. package com.example.H5ke8demo;
    2. import javax.servlet.ServletContext;
    3. import javax.servlet.ServletException;
    4. import javax.servlet.annotation.MultipartConfig;
    5. import javax.servlet.annotation.WebServlet;
    6. import javax.servlet.http.HttpServlet;
    7. import javax.servlet.http.HttpServletRequest;
    8. import javax.servlet.http.HttpServletResponse;
    9. import javax.servlet.http.Part;
    10. import java.io.File;
    11. import java.io.IOException;
    12. import java.sql.Connection;
    13. import java.util.Collection;
    14. @WebServlet(name = "ProcessFile", value = "/process-file")
    15. @MultipartConfig
    16. public class ProcessFile extends HttpServlet {
    17. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    18. Collection parts=request.getParts();
    19. for(Part part:parts){
    20. // System.out.println("\n");
    21. String header=part.getHeader("content-disposition");
    22. // System.out.println(header);
    23. // System.out.println(part.getContentType());
    24. // System.out.println(part.getSize());
    25. // System.out.println(part.getName());
    26. String fileName=header.substring(header.lastIndexOf("=")+2,header.lastIndexOf("\""));
    27. // System.out.println(fileName);
    28. ServletContext context =request.getServletContext();
    29. String savePath=context.getRealPath("/file");
    30. savePath += File.separator+fileName;
    31. // System.out.println(savePath);
    32. part.write(savePath);//写入文件
    33. }
    34. }
    35. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    36. }
    37. }

    uploadfile.html

    1inpput的file 设置multiple可以选多个文件

    2创建一个FormData对象,这个就是表单对像一样的------表单是同步的我的FormData异步

    3怎么模拟表单,加入键值对:            通过field.files返回长度---------file_field.files.length

                                                            append加的相当于 name,值--键值--------formDate.append

    fetch发送给process-file

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>上传文件3title>
    6. head>
    7. <body>
    8. <input type="file" multiple>
    9. <input type="button" value="上传" id="upload-btn">
    10. <script>
    11. let btn=document.querySelector("#upload-btn");
    12. let file_field=document.querySelector("input[type=file]");//1放到表单里的
    13. btn.addEventListener("click",(event)=>{
    14. let formDate=new FormData();
    15. for(let i=0;ifiles.length;i++){
    16. formDate.append("file"+(i+1),file_field.files[i]);//2文件数量
    17. }
    18. fetch("process-file",{
    19. method:"post",
    20. body:formDate
    21. })
    22. .then(response=>alert(response.status));
    23. })
    24. script>
    25. body>
    26. html>

    注意:

    加上Multiparconfig注释才能接收文件

    老师的问题他的webapp的file没有文件,加一个文件就行了''

    html都要在webapp下

    问题:

    怎么知道这个物理路径是什么,默认快照里面

    还有.then为什么不是两个

    传文件作为网盘使用

  • 相关阅读:
    力扣每日一题2022-09-07简单题:重新排列单词间的空格
    2023最新Office2021专业增强版安装使用教程
    C. Building Permutation
    C语言c89(c90)的所有的32个关键字分类
    代码随想录算法训练营第11天
    vue+cesium项目demo
    华清 Qt day2 9月18
    基于Xml方式的Bean的配置-Bean的作用范围scope配置
    Ubuntu16.04 设置静态 ip
    [Mongodb 5.0]比较运算符
  • 原文地址:https://blog.csdn.net/m0_72735063/article/details/134219836