当前位置: 首页 > news >正文

【Java】如何将二进制转换成MultipartFile

        业务场景:前端发送请求到后端进行文件上传,后端接收文件并调用第三方接口进行文件处理,响应格式为二进制,然后我们需要将二进制进行转换为MultipartFile进行文件上传。

        如果你想要将File转换成MultipartFile,可以参考:【Java】如何将File转换成MultipartFile_java file 转multipartfile_MXin5的博客-CSDN博客

 1.传递二进制responseBytes和file的名称即可。

// responseBytes为二进制流,file.getOriginalFilename()为文件的名称。
ByteArrayMultipartFile responseFile = new ByteArrayMultipartFile(responseBytes, "file", file.getOriginalFilename(), "application/octet-stream");

2. 将二进制流转换成MultipartFile的类:


import org.springframework.web.multipart.MultipartFile;import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;import java.nio.file.CopyOption;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;/*** 将二进制流转换成MultipartFile类的对象*/
public class ByteArrayMultipartFile implements MultipartFile {private final byte[] content;private final String name;private final String originalFilename;private final String contentType;public ByteArrayMultipartFile(byte[] content, String name, String originalFilename, String contentType) {this.content = content;this.name = name;this.originalFilename = originalFilename;this.contentType = contentType;}@Overridepublic String getName() {return name;}@Overridepublic String getOriginalFilename() {return originalFilename;}@Overridepublic String getContentType() {return contentType;}@Overridepublic boolean isEmpty() {return content.length == 0;}@Overridepublic long getSize() {return content.length;}@Overridepublic byte[] getBytes() {return content;}@Overridepublic InputStream getInputStream() {return new ByteArrayInputStream(content);}@Overridepublic void transferTo(File dest) throws IOException, IllegalStateException {Files.copy(new ByteArrayInputStream(content), dest.toPath(), new CopyOption[]{StandardCopyOption.REPLACE_EXISTING});}@Overridepublic void transferTo(Path dest) throws IOException, IllegalStateException {Files.copy(new ByteArrayInputStream(content), dest, new CopyOption[]{StandardCopyOption.REPLACE_EXISTING});}
}

直接使用

相关文章:

  • Flink SQL 表值聚合函数(Table Aggregate Function)详解
  • 突然消失的桌面文件如何恢复?详细教程让你轻松解决问题!
  • 模拟法——张三的零花钱(C#)
  • 从零开始搭建React+TypeScript+webpack开发环境-基于lerna的webpack项目工程化改造
  • 立体库堆垛机控制程序手动功能实现
  • linux 下正确使用cp命令复制目录
  • QT windows与linux之间sokcet通信中文乱码问题解决方法
  • go学习之接口知识
  • 【ArcGIS Pro微课1000例】0031:las点云提取(根据范围裁剪点云)
  • 前、后端程序员开发常用api接口
  • SpringBoot 项目优雅实现读写分离 | 京东云技术团队
  • CTFhub-RCE-远程包含
  • Git企业开发级讲解(二)
  • 【uniapp】确认弹出框,选择确定和取消
  • File Upload
  • ES6核心特性
  • java小心机(3)| 浅析finalize()
  • Laravel5.4 Queues队列学习
  • mysql外键的使用
  • Python利用正则抓取网页内容保存到本地
  • vue-router的history模式发布配置
  • vuex 学习笔记 01
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 利用jquery编写加法运算验证码
  • 模型微调
  • 普通函数和构造函数的区别
  • 什么是Javascript函数节流?
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • # 透过事物看本质的能力怎么培养?
  • #mysql 8.0 踩坑日记
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • .net 7 上传文件踩坑
  • .NET Core中Emit的使用
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .Net中的集合
  • .NET中使用Redis (二)
  • /bin/rm: 参数列表过长"的解决办法
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @Autowired和@Resource装配
  • @Transactional 详解
  • [14]内置对象
  • [20190401]关于semtimedop函数调用.txt
  • [BetterExplained]书写是为了更好的思考(转载)
  • [BZOJ 3531][Sdoi2014]旅行(树链剖分+线段树)
  • [C#] 如何调用Python脚本程序
  • [C#]C# winform实现imagecaption图像生成描述图文描述生成
  • [C#]OpenCvSharp使用帧差法或者三帧差法检测移动物体
  • [CentOs7]iptables防火墙安装与设置
  • [CLickhouse] 学习小计
  • [CLR via C#]11. 事件
  • [cogs2652]秘术「天文密葬法」
  • [FTP]pureftp部署和优化