java MultipartFile multipartFile 文件上傳重命名
我們在文件上傳的時候,需要考慮重名覆蓋問題,為邏輯嚴謹,需要在文件上傳的時候,將文件名前方拼接UUID或者時間戳,來區分同名文件,但因此引出如何修改前端傳給后端的文件名稱。
這時候需要將這個類型的MultipartFile內部將文件名添加UUID,但前端又不太方便處理,由此后端處理方式如下:
String fileSuffix = multipartFile.getOriginalFilename();
//文件重命名
String fileName0 = fileSuffix.substring(0,fileSuffix.lastIndexOf("."));
String fileName1 = fileSuffix.substring(fileSuffix.lastIndexOf(".")+1);
//重命名
String newName = uuid+"_"+fileName0;
//臨時文件
File file=File.createTempFile(newName , "."+fileName1);
multipartFile.transferTo(file);
InputStream inputStream = new FileInputStream(file);
//File轉換成MultipartFile
multipartFile = new MockMultipartFile(file.getName(), file.getName(),multipartFile.getContentType(),inputStream);
//程序退出后刪除臨時文件
file.deleteOnExit();
注意:
File file=File.createTempFile(newName , “.”+fileName1);
該方法創建文件的時候,文件名(newName )不能不能少于兩個漢字
補充:
1、引入的依賴
import org.springframework.mock.web.MockMultipartFile;
2、pom依賴
<dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId></dependency>