springboot以MultipartFile格式上传文件报错临时文件不存在的问题
原因是服务器临时文件别清理掉,在服务启动的时候会创建临时文件:/tmp/tomcat.*************.服务器端口,,如果运行期间被清理,会导致报错临时文件不存在的问题。
1、临时解决办法:重启服务.
2、完全解决办法:在文件上传之后,立马就存到服务器上,然后之后操作文件的话,就拿保存下载的文件进行操作就行了,那么不管临时文件有没有被清理掉,都没有关系了。
3、多线程不要使用MultipartFile进行参数传递,要使用流传递
MultiValueMap<String, MultipartFile> multiFileMap = request.getMultiFileMap();
MultipartFile multipartFile = multiFileMap.getFirst("multipartFile");
service.uploadData(multipartFile.getInputStream(),multipartFile.getOriginalFilename(),taskId
4、代码解决:
具体使用方式如下:
//获取上传的文件名
String fileName = uploadFile.getOriginalFilename();
// 获取文件后缀名
String suffix=fileName.substring(fileName.lastIndexOf("."));
// 用uuid作为文件名,防止生成的临时文件重复
File dest = File.createTempFile(UuidUtils.getUuid(), suffix);
// 将上传文件复制到临时文件
FileUtils.copyInputStreamToFile(uploadFile.getInputStream(),dest);
这样就实现了文件流的复制,进而实现文件上传,并且一个流可以使用多次

浙公网安备 33010602011771号