InputStream与MultipartFile的相互转换

您所在的位置:网站首页 outputstream转为inputstream InputStream与MultipartFile的相互转换

InputStream与MultipartFile的相互转换

2024-01-01 11:40| 来源: 网络整理| 查看: 265

InputStream:处理字节相关,如声音或者图片等二进制,输入字节流。

MultipartFile:org.springframework.web.mutipart包下的一个类,也就是说如果想使用MultipartFile这个类就必须引入spring框架,换句话说,如果想在项目中使用MultipartFile这个类,那么项目必须要使用spring框架才可以,否则无法引入这个类。一般来讲使用MultipartFile这个类主要是来实现以表单的形式进行文件上传功能。

首先MultipartFile是一个接口,并继承自InputStreamSource,且在InputStreamSource接口中封装了getInputStream方法,该方法的返回类型为InputStream类型,这也就是为什么MultipartFile文件可以转换为输入流。

因此通过以下方法将MultipartFile转换成InputStream

InputStream fileStream = MultipartFile.getInputStream();

然而在InputStream转换成MultipartFile中我们会使用MockMultipartFile这个类

public MockMultipartFile(String name, byte[] content) { this(name, "", (String)null, (byte[])content); } public MockMultipartFile(String name, InputStream contentStream) throws IOException { this(name, "", (String)null, (byte[])FileCopyUtils.copyToByteArray(contentStream)); } public MockMultipartFile(String name, String originalFilename, String contentType, byte[] content) { Assert.hasLength(name, "Name must not be null"); this.name = name; this.originalFilename = originalFilename != null ? originalFilename : ""; this.contentType = contentType; this.content = content != null ? content : new byte[0]; } public MockMultipartFile(String name, String originalFilename, String contentType, InputStream contentStream) throws IOException { this(name, originalFilename, contentType, FileCopyUtils.copyToByteArray(contentStream)); }

MockMultipartFile存在四个构造方法,需要注意的是,使用MockMultipartFile将InputStream转成MultipartFile后MultipartFile中不会获取到文件的contentType,需要按实际需求选择构造方法进行转换。

下面是我在实际应用中使用到的转换

/** * filename:文件名 * file.getName():原文件名称 * file.getContentType():原文件ContentType * fileStream:文件输入字节流 */ MultipartFile File = new MockMultipartFile(filename, file.getName(), file.getContentType(), fileStream);



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3