更改MultipartFile的名称

时间:2019-07-10 07:39:56

标签: spring-boot

我正在尝试更改MultipartFile的名称。

我在控制器上使用MultipartFile来调用rest服务:

@PostMapping("/post")
public ResponseEntity<String> handleFileUpload(@RequestParam("file") MultipartFile file)
{
    ...
}

您是否有任何关于更改上载文件的OriginalFilename的想法?

非常感谢。

2 个答案:

答案 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();
        }
    }