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

原文地址:https://www.cnblogs.com/jia0504/p/13991578.html