【发布时间】: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