boot - 文件流透传
在进行文件转发的时候,大多数处理方式是从 MultipartFile 请求参数中将文件临时保存在服务器,然后使用第三方http客户端再次读取文件,进行一次http请求转发,这样的效率不是很好
spring 为我们 提供了 ByteArrayResource, 这个可以将我们的流进行透传而不用先保存临时文件到服务器
for (Map.Entry<String, List<MultipartFile>> entry : multiFileMap.entrySet()) {
String key = entry.getKey();
for (MultipartFile multipartFile : entry.getValue()) {
ByteArrayResource fileResource = new ByteArrayResource(multipartFile.getBytes()) {
@Override
public long contentLength() {
return multipartFile.getSize();
}
@Override
public String getFilename() {
return multipartFile.getOriginalFilename();
}
};
formData.add(key, fileResource);
}
}
注意,需要重写 contentLength() 和 getFilename() 方法
good luck!