【Spring】使用Spring的MultipartFile进行文件上传

public void upload(MultipartFile file, String uploadpath,  String id,String num) {
		try {
			// 判断目录是否存在
			File fold = new File(uploadpath + "/" + id);
			if (!fold.exists()) {
				fold.mkdirs();
			}
			//取轮播图的序列号
			
			//取文件名后缀
			String postfix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
			FileOutputStream fileOS = new FileOutputStream(uploadpath + "/" + id + "/"  + num + postfix);
			fileOS.write(file.getBytes());
			fileOS.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
}

Spring Boot中使用MultipartFile处理文件上传,有以下注意事项: - **临时文件存储与清理**:上传的文件默认存储在操作系统的临时目录中(如Windows的C:\Users\XXX\AppData\Local\Temp\),当请求处理完成后,Spring会通过MultipartResolver自动清理临时文件,但要注意避免资源泄漏问题[^1]。 - **请求方式与格式**:使用MultipartFile上传文件通常采用POST请求方式。在Postman等工具测试时,不要手动添加content-type,若遇到`org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found`错误,不手动添加content-type即可解决。同时,请求体的格式要正确,要选择合适的方式上传文件,如选择文件名等操作[^4]。 - **与RequestBody区别**:使用MultipartFile上传文件和常规的RequestBody有区别,它是将实体类的每个属性值当做单独的key上传上来,在使用时要注意这种差异,正确处理请求参数[^3]。 - **文件大小限制**:需要设置合适的文件大小限制,避免因上传过大文件导致服务器出现问题。可以在`application.properties`或`application.yml`中进行配置,例如在`application.properties`中设置: ```properties spring.servlet.multipart.max-file-size=10MB spring.servlet.multipart.max-request-size=10MB ``` - **异常处理**:在代码中要对可能出现的异常进行处理,如文件为空、文件上传失败等情况,保证系统的稳定性和健壮性。示例代码如下: ```java import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @RestController public class FileUploadController { @PostMapping("/upload") public String handleFileUpload(@RequestParam("file") MultipartFile file) { if (file.isEmpty()) { return "请选择要上传的文件"; } try { // 处理文件上传逻辑 byte[] bytes = file.getBytes(); // 可以将字节数组存储到文件或进行其他处理 return "文件上传成功"; } catch (Exception e) { return "文件上传失败: " + e.getMessage(); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值