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使用時不需要添加注解,比較方便。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM