前端
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
因篇幅问题不能全部显示,请点此查看更多更全内容