如何在不存储在服务器硬盘上的情况下上传多部分文件

How to upload multipart file without storing on server harddisk

我的 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;
    }

终于找到了一个比较简单的实现方法。

无需转成文件!!!!

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
}