InputStream与MultipartFile的相互转换
InputStream与MultipartFile的相互转换
文章共444字 · 阅读需要大约2分钟
一键AI生成摘要,助你高效阅读
问答
·
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);
更多推荐
已为社区贡献2条内容
所有评论(0)