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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值