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

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

ProcessFile.java

1value = "/process-file"

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

3遍历每一个part

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

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

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

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

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

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

part也有这个Header方法

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

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

java 复制代码
package com.example.H5ke8demo;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.util.Collection;

@WebServlet(name = "ProcessFile", value = "/process-file")
@MultipartConfig
public class ProcessFile extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Collection<Part> parts=request.getParts();
        for(Part part:parts){
//            System.out.println("\n");
            String header=part.getHeader("content-disposition");
//            System.out.println(header);
//            System.out.println(part.getContentType());
//            System.out.println(part.getSize());
//            System.out.println(part.getName());

            String fileName=header.substring(header.lastIndexOf("=")+2,header.lastIndexOf("\""));
//            System.out.println(fileName);
            ServletContext context =request.getServletContext();
            String savePath=context.getRealPath("/file");
            savePath += File.separator+fileName;
//            System.out.println(savePath);
            part.write(savePath);//写入文件
        }



    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

uploadfile.html

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

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

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

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

fetch发送给process-file

html 复制代码
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>上传文件3</title>
    </head>
    <body>
<input type="file" multiple>
        <input type="button" value="上传" id="upload-btn">

        <script>
            let btn=document.querySelector("#upload-btn");
            let file_field=document.querySelector("input[type=file]");//1放到表单里的
            btn.addEventListener("click",(event)=>{
                let formDate=new FormData();
                for(let i=0;i<file_field.files.length;i++){
                    formDate.append("file"+(i+1),file_field.files[i]);//2文件数量
                }
                fetch("process-file",{
                    method:"post",
                    body:formDate
                })
                .then(response=>alert(response.status));
            })
        </script>
    </body>
</html>

注意:

加上Multiparconfig注释才能接收文件

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

html都要在webapp下

问题:

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

还有.then为什么不是两个

传文件作为网盘使用

相关推荐
ViavaCos5 分钟前
pnpm v11 的安全策略,让我踩了个坑
前端
To_OC7 分钟前
从一段定时器代码,重新捋清 JS 同步、异步与 Promise
前端·javascript·代码规范
持敬chijing8 分钟前
Web渗透之前后端漏洞-XSS漏洞原理攻击防御全流程
前端·安全·web安全·网络安全·网络攻击模型·安全威胁分析·xss
程序员黑豆15 分钟前
AI全栈开发 - Java:注释
前端·后端·ai编程
痕忆丶24 分钟前
Typora 的替代marktext,marktext切换中文
前端
羊羊小栈36 分钟前
Uplift营销供应链协同决策系统(基于Uplift因果推断与运筹优化算法)
前端·人工智能·算法·毕业设计·大作业
阿猫的故乡38 分钟前
Vue组合式函数(Composables)从入门到实战:鼠标跟踪、请求封装、本地存储……全案例拆解
前端·vue.js·计算机外设
Upsy-Daisy44 分钟前
Hermes Agent 学习笔记 02:安装、配置与第一次运行
java·前端·数据库
一壶纱1 小时前
一个用于 UniApp 项目的 Pinia 持久化插件
前端·javascript·vue.js
凌涘1 小时前
JS 八大基本类型:一场内存视角的冒险之旅
前端·javascript