在文件上传业务上需要将文件上传至将File转换成MultiPartFile的时候,我搜索得到采用MockMultipartFile这个类可以轻松的转换。
但是,当我准备使用的时候,坑出现了。它是spring-test下的包。
这个类主要是在test中请求出现的。
打包之后没法使用。因此,MockMultipartFile并不适用于我这种情况。
于是,我又找到了CommonsMultipartFile这个类,可以满足业务需要,但是操作比较麻烦。
下面是具体的使用方法:
1.首先获取FileItem对象:
public FileItem createFileItem(String filePath) {
FileItemFactory factory = new DiskFileItemFactory(16, null);
String textFieldName = "textField";
int num = filePath.lastIndexOf(".");
String extFile = filePath.substring(num);
FileItem item = factory.createItem(textFieldName, "text/plain", true, "MyFileName");
File newfile = new File(filePath);
int bytesRead = 0;
byte[] buffer = new byte[8192];
try {
FileInputStream fis = new FileInputStream(newfile);
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;
}
2.通过FileItem对象可以轻松获得CommonsMultipartFile对象,转换成MultiPartFile对象即可使用。
MultipartFile mfile = new CommonsMultipartFile(fileItem);
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。