Form表单提交后获取下载文件到服务器以及获取文件之外的参数数据

Form表单提交后获取下载文件到服务器以及获取文件之外的参数数据

ServletDemo类:

@MultipartConfig
@WebServlet("/ServletDemo")
public class ServletDemo  extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doGet(req, resp);
    }
    
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取文件之外的参数,前提是ServletDemo配置了@MultipartConfig
        System.out.println(req.getParameter("name"));
        //获取上传文件的组件
        Part part = req.getPart("file");
        //获取文件信息
        String fileInfo= part.getHeader("content-disposition");
        //fileInfo为form-data; name="file"; filename="a.png"
        char[] chars = fileInfo.toCharArray();
        String filename  = "";
        int index = fileInfo.length()-2;
        while(chars[index]!='\"'){
            filename = chars[index]+filename;
            index--;
        }
        InputStream input= part.getInputStream();
        FileOutputStream output= new FileOutputStream("D:\\IDEA_Workspace\\SSM\\src\\images\\"+filename);
        BufferedInputStream inputStream = new BufferedInputStream(input);
        BufferedOutputStream outputStream = new BufferedOutputStream(output);
        int len;
        byte[] bytes = new byte[1024];
        while((len=inputStream.read(bytes))!=-1){
            System.out.println(len);
            outputStream.write(bytes,0,len);
        }
        //注意一定要flush一下否则无法完整写入
        outputStream.flush();
        inputStream.close();
        outputStream.close();
    }
}

表单提交html文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件提交样例</title>
</head>
<body>
    <form action="http:///127.0.0.1:8080/ServletDemo" method="post" enctype="multipart/form-data">
        <input type="text" name="name" value="jack">
        <input type="file" name="file">
        <input type="submit" value="提交">
    </form>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值