Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在不存储在服务器硬盘上的情况下上载多部分文件_Java_Spring Boot_Java 8_Multipartform Data_Resttemplate - Fatal编程技术网

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

Java 如何在不存储在服务器硬盘上的情况下上载多部分文件,java,spring-boot,java-8,multipartform-data,resttemplate,Java,Spring Boot,Java 8,Multipartform Data,Resttemplate,我的SpringBoot API接收多部分文件。然后使用RestTemplate,我将其发送到不同的API。它很好用 这里的问题是它将多部分文件存储在服务器硬盘上。我的API应该充当前端和另一个API端点之间的中间服务 我不想在本地存储收到的文件 我可以做的一件事是上传到不同的API后删除 我们是否有更好的方法来做同样的事情,即不在服务器上存储或从服务器自动删除 我的代码如下 控制器 @PostMapping(value = "/uploadFile", consum

我的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上传文件(多部分文件mFile,字符串元数据){
文件文件=转换文件(mFile);
LinkedMultiValueMap=新建LinkedMultiValueMap();
添加(“文件”,新文件系统资源(文件));
添加(“元数据”,元数据);
//resttemplate将文档上载到服务器的更多逻辑
}
公共文件转换文件(多部分文件mFile){
File File=新文件(mFile.getOriginalFilename());
试一试{
createNewFile();
FileOutputStream FileOutputStream=新的FileOutputStream(文件);
fileOutputStream.write(mFile.getBytes());
fileOutputStream.close();
}捕获(IOE异常){
e、 printstackTrace();
}
返回文件;
}

终于找到了一个非常简单的方法来实现上述目标

没有必要将其转换为文件

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
}
private SomePojoObject上传文件(多部分文件mFile,字符串元数据){
LinkedMultiValueMap=新建LinkedMultiValueMap();
add(“文件”,mFile.getResource());
添加(“元数据”,元数据);
//resttemplate将文档上载到服务器的更多逻辑
}

终于找到了一个非常简单的方法来实现上述目标

没有必要将其转换为文件

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
}
private SomePojoObject上传文件(多部分文件mFile,字符串元数据){
LinkedMultiValueMap=新建LinkedMultiValueMap();
add(“文件”,mFile.getResource());
添加(“元数据”,元数据);
//resttemplate将文档上载到服务器的更多逻辑
}

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