我正在尝试更改MultipartFile的名称。
我在控制器上使用MultipartFile来调用rest服务:
@PostMapping("/post")
public ResponseEntity<String> handleFileUpload(@RequestParam("file") MultipartFile file)
{
...
}
您是否有任何关于更改上载文件的OriginalFilename的想法?
非常感谢。
答案 0 :(得分:0)
您可以尝试以下代码。
@PostMapping("/post")
public ResponseEntity<String> handleFileUpload(@RequestParam("file") MultipartFile file)
{
try {
String filename = "random_filename.pdf"; // Give a random filename here.
byte[] bytes = file.getBytes();
String insPath = <DIRECTORY PATH> + filename // Directory path where you want to save ;
Files.write(Paths.get(insPath), bytes);
return ResponseEntity.ok(filename);
}
catch (IOException e) {
// Handle exception here
}
}
您必须记住在文件名中添加一个随机字符串。如果您只是硬编码文件名,则每次上载文件时,先前的文件将被替换。
答案 1 :(得分:0)
您可以按以下方式实现文件的重命名。要进行验证,请上传uploadDir,您将拥有一个带有"renameTest"
的文件。
您可以将clientId + uploadTime
附加到文件名中,以避免数据库中的文件名相同
@PostMapping(value = "/post")
public String renameMultipartFile(@RequestParam("file") MultipartFile file) {
String uploadDir = "yourPath";
String filename = "renameTest";
Path saveTO = Paths.get(uploadDir + filename);
try {
try {
Files.copy(file.getInputStream(), saveTO);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("Error : " + e.getMessage());
}
return "File uploaded successfully";
} catch (Exception e) {
e.printStackTrace();
return "Error : " + e.getMessage();
}
}