【问题标题】:How to upload multipart file without storing on server harddisk如何上传多部分文件而不存储在服务器硬盘上
【发布时间】:2021-08-16 09:32:45
【问题描述】:

我的 SpringBoot API 接收多部分文件。然后使用 RestTemplate 我将相同的内容发送到不同的 API。很好用!!!

这里的问题是它在服务器硬盘上存储多部分文件。我的 API 应该充当前端和另一个 API 端点之间的中间服务

我不想在本地存储收到的文件 我可以做的一件事是在上传到不同的 API 后删除。

有没有更好的方法我们做同样的事情,即不存储在服务器上或从服务器自动删除。

我的代码如下 控制器

    @PostMapping(value = "/uploadFile", consumes = { "multipart/form-data" })
    public SomePojoObject uploadFile(@RequestParam("file") MultipartFile mFile,
            @RequestParam("metaData") String metaData) {

        return service.uploadFile(mFile, metaData);

    }

服务代码如下

private SomePojoObject uploadFile(MultipartFile mFile, String metaData) {

    File file = convertFile(mFile);

    LinkedMultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
    map.add("FILE", new FileSystemResource(file));
    map.add("metaData", metaData);
        
    // Some more logic of resttemplate to upload document to server
}


public File convertFile(MultipartFile mFile) {
        File file = new File(mFile.getOriginalFilename());
        try {
            file.createNewFile();
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            fileOutputStream.write(mFile.getBytes());
            fileOutputStream.close();
        } catch (IOException e) {
            e.printstackTrace();
        }

        return file;
    }

【问题讨论】:

  • 您是否使用MultipartFile#transferTo 将其存储为文件?您可以使用MultipartFile#getInputStream 从内存中读取内容。
  • 谢谢维姆。它的默认行为我没有使用其他任何东西
  • 变量file 根本没有在您展示给我们的代码中使用。此外,将 MultipartFile 转换为 File 的“逻辑”会很有趣。您可以将文件存储为字节数组或更合适的格式,具体取决于确切的用例。
  • 更新了我的问题

标签: java spring-boot java-8 multipartform-data resttemplate


【解决方案1】:

终于找到了一个相当简单的方法来实现上面的。

无需转成文件。!!!

private SomePojoObject uploadFile(MultipartFile mFile, String metaData) {

    LinkedMultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
    map.add("FILE", mFile.getResource());
    map.add("metaData", metaData);
        
    // Some more logic of resttemplate to upload document to server
}

【讨论】:

    猜你喜欢
    • 2022-12-03
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    相关资源
    最近更新 更多