Я пытаюсь изменить имя MultipartFile.
Я использую MultipartFile на своем контроллере для вызова службы отдыха:
@PostMapping("/post")
public ResponseEntity<String> handleFileUpload(@RequestParam("file") MultipartFile file)
{
...
}
Есть ли у вас какие-либо идеи об изменении OriginalFilename загруженного файла?
Большое спасибо.




Вы можете попробовать следующий код.
@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
}
}
Вы должны не забыть добавить случайную строку к имени файла. Если вы просто жестко задаете имя файла, каждый раз, когда вы загружаете файл, предыдущий файл будет заменяться.
Вы можете добиться переименования файла, как показано ниже. Для проверки перейдите в 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();
}
}
Здравствуйте, сэр @PatelRomil, большое спасибо. Это также работает.
Возможно ли переименование без сохранения файла в локальный каталог? Необходимо загрузить полученный MultipartFile в Azureblob с настраиваемым именем файла.