boot - 文件流透传

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!

你可能感兴趣的:(spring,boot,boot)