一、問題發生
在學習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使用時不需要添加注解,比較方便。