1.导入依赖
其实上传文件不要啥依赖,你把springbootweb启动器导入就好。
<!--json-->
<!--json工具-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--jdbc-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
2.编写配置
2.X以上得springboot
## 上传文件总的最大值
spring.servlet.multipart.max-request-size: 30MB
## 单个文件的最大值
spring.servlet.multipart.max-file-size: 10MB
2.X以下得springboot
## 上传文件总的最大值
spring.servlet.multipart.maxrequestsize: 30MB
## 单个文件的最大值
spring.servlet.multipart.maxfilesize: 10MB
3.编写代码
package com.fwwb.controller;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
@Controller
public class UploadController {
private static final Logger LOGGER = LoggerFactory.getLogger(UploadController.class);
/**
* 上传文件
* @param file 数据文件
* @param response
*/
@PostMapping("/upload")
public void upload(@RequestParam("file") MultipartFile file, HttpServletResponse response) {
JSONObject json = new JSONObject();
if (file.isEmpty()) {
json.put("msg","上传失败,请选择文件");
}else{
String fileName = file.getOriginalFilename();
//这里可以判断后缀是否符合
String suffix = fileName.substring(fileName.indexOf('.')+1); //后缀
fileName = fileName.substring(0,fileName.indexOf('.'))+"_"+randownName(); //新文件名
// String filePath = "/workspace/temp";
//这个是本地测试的filePath
String filePath = "D:\\workspace";
File dest = new File(filePath);
//创建文件保存地址
if(!dest.exists()){
dest.mkdirs();
}
File excelFile = new File(filePath + "/" +fileName + "." +suffix);
System.out.println(excelFile);
PrintWriter out = null;
try {
out = response.getWriter();
file.transferTo(excelFile);
json.put("msg","上传成功");
} catch (IOException e) {
LOGGER.error(e.toString(), e);
json.put("msg","上传失败");
}
char[] buf = json.toString().toCharArray();
if(buf.length>0){
out.write(buf);//发送
out.flush();
out.close();
}
}
try {
response.getWriter().print(json);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 生成16位随机字符串
* @return
*/
private static String randownName() {
String str = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz";
StringBuffer res = new StringBuffer("");
for (int i = 0; i < 12; i++) {
res.append(str.charAt((int) (Math.random() * str.length() - 1)));
}
return res.toString();
}
}
参考代码:https://blog.youkuaiyun.com/gnail_oug/article/details/80324120