SpringBoot实现文件上传的多种方式
https://baijiahao.baidu.com/s?id=1748180186003034716&wfr=spider&for=pc
package com.szl.linuxfileoperation.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.ClassUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.PrintWriter;
import java.util.Map;
import java.util.UUID;
@RestController
@Slf4j
public class UploadController {
//上传路径
@Value("${document.uploadPath}")
private String uploadPath;
@RequestMapping("/uploading")
public void upload(HttpServletRequest request, PrintWriter out) {
//将请求转为文件上传请求
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
MultipartFile multipartFile;
for (Map.Entry<String, MultipartFile> set : fileMap.entrySet()) {
//这里是数据提交时的key
//String filekey = set.getKey();
//这是文件数据本身
multipartFile = set.getValue();
//保存文件,同时保存的文件名称返回
out.print(this.storeIOc(multipartFile));
}
}
private String storeIOc(MultipartFile file) {
//使用tomcat运行目录来拼接上传路径
//String realPath = request.getServletContext().getRealPath(uploadPath + File.separator);
// 获取class运行目录拼接上传路径
String realPath = ClassUtils.getDefaultClassLoader().getResource("").getPath() + uploadPath + File.separator;
// 建立class运行目录下文件夹
File folder = new File(realPath);
if (!folder.exists()) {
folder.mkdirs();
}
String fileName;
String logImageName = null;
// 文件存在则执行保存
if (!(file == null || file.isEmpty())) {
String _fileName = file.getOriginalFilename();
log.info("OriginalFilename: {}",_fileName);
String suffix = ".JPEG";
String baseName = "";
if (_fileName.lastIndexOf(".") > 0) {
suffix = _fileName.substring(_fileName.lastIndexOf("."));
baseName = _fileName.substring(0, _fileName.lastIndexOf("."));
}
logImageName = UUID.randomUUID().toString() + "_" + baseName + "." + suffix;
fileName = realPath + File.separator + logImageName;
File restore = new File(fileName);
try {
file.transferTo(restore);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return logImageName;
}
}
package com.szl.linuxfileoperation.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.multipart.MultipartResolver;
import org.springframework.web.multipart.support.StandardServletMultipartResolver;
@Configuration
public class MultipartFileUploadConfiguration {
@Bean
public MultipartResolver multipartResolver() {
StandardServletMultipartResolver multipartResolver = new StandardServletMultipartResolver();
return multipartResolver;
}
}
package com.szl.linuxfileoperation;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class LinuxFileOperationApplication {
public static void main(String[] args) {
SpringApplication.run(LinuxFileOperationApplication.class, args);
}
}
application.yml
server:
port: 9090
spring:
servlet:
multipart:
max-file-size: 30MB #单个文件最大值
max-request-size: 300MB # 上传文件总的最大值
document:
uploadPath: data/wav #文件上传路径
标签:
SpringBoot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探