大家都知道在做文件上传的时候,后端直接用MultipartFile类接收就行了,那么为什么还要考虑把File转化为MultipartFile呢?我偶然在测试Excel导入的时候用到了,直接用Junit测试,Excel文件放在工程中,这就需要把本地文件转为File,再转为MultipartFile。当然仅仅为了测试一个Excel文件导入完全不必这样。哈哈,没错,我就是闲的。下面是过程。
引入以下依赖:
commons-fileupload
commons-fileupload
1.3.1
下面是具体代码:
package com.leiyuke.file.excel.one;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
public class FileUtil {
public MultipartFile fileToMultipartFile(File file) {
FileItem fileItem = createFileItem(file);
MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
return multipartFile;
}
private static FileItem createFileItem(File file) {
FileItemFactory factory = new DiskFileItemFactory(16, null);
FileItem item = factory.createItem("textField", "text/plain", true, file.getName());
int bytesRead = 0;
byte[] buffer = new byte[8192];
try {
FileInputStream fis = new FileInputStream(file);
OutputStream os = item.getOutputStream();
while ((bytesRead = fis.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
return item;
}
}
注意:导入的是org.apache.commons下的包,一定记住,我踩过的雷。。。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
哈喽,我是子牙,一个很卷的硬核男人。喜欢研究底层,聚焦做那些大家想学没地方学的课程:手写操作系统、手写虚拟机、手写编程语言…目前做了两门课:手写OS、手写JVM 今天想跟大家聊一个黑科技:手写网络协议栈。为什么说它是黑科技呢?因为这玩意是网络黑客从事一切网络保…