MultipartFile 和 CommonsMultipartFile的区别
一、问题发生
在学习SpringMVC框架时,视频中老师使用CommonsMultipart接受上传的文件,而我以前使用的是MultipartFile接收上传的文件,便想要知道他们的区别。
二、问题解决
查看源码文件
MultipartFile.java
public interface MultipartFile extends InputStreamSource {
String getName();
String getOriginalFilename();
String getContentType();
boolean isEmpty();
long getSize();
byte[] getBytes() throws IOException;
InputStream getInputStream() throws IOException;
void transferTo(File var1) throws IOException, IllegalStateException;
}
CommonsMultipartFile.java
public class CommonsMultipartFile implements MultipartFile, Serializable {
protected static final Log logger = LogFactory.getLog(CommonsMultipartFile.class);
private final FileItem fileItem;
private final long size;
private boolean preserveFilename = false;
public CommonsMultipartFile(FileItem fileItem) {
this.fileItem = fileItem;
this.size = this.fileItem.getSize();
}
public String getName() {
return this.fileItem.getFieldName();
}
public String getOriginalFilename() {
String filename = this.fileItem.getName();
if (filename == null) {
return "";
} else if (this.preserveFilename) {
return filename;
} else {
int unixSep = filename.lastIndexOf(47);
int winSep = filename.lastIndexOf(92);
int pos = winSep > unixSep ? winSep : unixSep;
return pos != -1 ? filename.substring(pos + 1) : filename;
}
}
三、主要区别
本质区别:MultipartFile 是接口, CommonsMultipartFile 是其实现类
使用区别:CommonsMultipartFile 类型需要添加@RequestParam 参考博客
建议使用: MultipartFile,原因一般情况都是使用接口,该接口可能会增加实现类,如此就不需要去修改代码中的类型;并且目前来说MultipartFile使用时不需要添加注解,比较方便。