上传文件用MultipartFile对象接收文件,主线程直接返回,异步线程处理文件,当主线程返回数据时异步线程还未读取文件的话之后文件就会读不到,报错“File has been moved - cannot be read again”,因为接口已经返回了,数据流也就清空了,这时候就需要我们在异步线程开启之前创建临时文件,异步线程读取临时文件,就不会读不到数据了。
String originalFilename = multipartFile.getOriginalFilename();
String[] filename = originalFilename.split("\\.");
if(filename[0].length()<3){
file = File.createTempFile("temp"+filename[0], "." + filename[1]);
}else {
file = File.createTempFile(filename[0], "." + filename[1]);
}
//将上传的文件流给到临时文件
multipartFile.transferTo(file);
临时文件处理完成后记得删除文件哈
file.delete();
这样只要不删除临时文件,那么文件就一直能读到