• 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为什么不是两个

    传文件作为网盘使用

  • 相关阅读:
    Android Studio里的C/C++返回: ld: error: undefined symbol
    经典再现!阿里大牛亲码千页Java异步实战手册,实战太香了!
    Dubbo的使用
    Js逆向——捅了【马蜂窝】的ob混淆与加速乐
    Rust语言有些情况一直卡住的解决方法
    深入学习 Redis Cluster - 集群缩容(全网最详细)
    一篇解决登录与支付
    android_刷入twrp_twrp刷入面具&刷入第三方rom&下载魔趣rom刷入体验
    左值引用与右值引用疑点总结
    享元模式Flyweight
  • 原文地址:https://blog.csdn.net/m0_72735063/article/details/134219836