您好,欢迎来到飒榕旅游知识分享网。
搜索
您的当前位置:首页springboot使用ServletFileUpload上传文件

springboot使用ServletFileUpload上传文件

来源:飒榕旅游知识分享网

前端
upload.html

<HTML>
<HEAD>
    <title>上传文件</title>
</HEAD>
<body>
<div>
    <form action="/upload" method="post" enctype="multipart/form-data">
        <table>
            <tr>
                <td>上传文件</td>
                <td><input name="file" type="file"></td>
                <td><input type="submit" value="上传"></td>
            </tr>
        </table>
    </form>
</div>
</body>
</HTML>

后台
UploadController.java

package com.example.demo.Controller;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.List;

@Controller
public class UploadController {
    @GetMapping("/upload")
    public String u() {
        return "upload";
    }

    @PostMapping("/upload")
    public String upload(HttpServletRequest request, HttpServletResponse response) {
        response.setContentType("text/html;charset=UTF-8");

        //创建一个解析器工厂
        DiskFileItemFactory factory = new DiskFileItemFactory();
        //设置工厂的临时文件目录:当上传文件的大小大于缓冲区大小时,将使用临时文件目录缓存上传的文件
        factory.setRepository(new File("C:\\Novel\\"));
        //文件上传解析器
        ServletFileUpload upload = new ServletFileUpload(factory);
        //设置所有上传数据的最大值,单位字节long  10M
        upload.setSizeMax(1024 * 1024 * 10);
        //设置单个文件上传的最大值
        upload.setFileSizeMax(1024 * 1024 * 10);
        //设置编码格式
        upload.setHeaderEncoding("UTF-8");
        try {
            //解析请求,将表单中每个输入项封装成一个FileItem对象
            List<FileItem> itemList = upload.parseRequest(request);
            //System.out.println(itemList.size());
            for (FileItem item : itemList) {
                    //上传的是文件,获得文件上传字段中的文件名
                    String fileName = item.getName();
                    //返回表单标签name属性的值
                    String namede = item.getFieldName();

                    //保存上传文件到指定的文件路径
                    InputStream is = item.getInputStream();
                    String Root_Path="C:\\WORK\\shop\\src\\main\\resources\\static\\jpg\\";
                    FileOutputStream fos = new FileOutputStream(Root_Path + fileName);
                    byte[] buff = new byte[1024];
                    int len = 0;
                    while ((len = is.read(buff)) > 0) {
                        fos.write(buff);
                    }
                    is.close();
                    fos.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "index";
    }
}

依赖包配置
pom.xml

 <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.4</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>

禁用spring boot自带的文件上传组件
application.properties

spring.servlet.multipart.enabled=false

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sarr.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务