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);
这样就实现了文件流的复制,进而实现文件上传,并且一个流可以使用多次
posted @ 2020-08-28 15:49  nobug为最终目标  阅读(2749)  评论(0)    收藏  举报