• 把File转化为MultipartFile过程记录


      大家都知道在做文件上传的时候,后端直接用MultipartFile类接收就行了,那么为什么还要考虑把File转化为MultipartFile呢?我偶然在测试Excel导入的时候用到了,直接用Junit测试,Excel文件放在工程中,这就需要把本地文件转为File,再转为MultipartFile。当然仅仅为了测试一个Excel文件导入完全不必这样。哈哈,没错,我就是闲的。下面是过程。

      引入以下依赖:

    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.3.1</version>
    </dependency>

      下面是具体代码:

    package com.leiyuke.file.excel.one;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    
    import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.FileItemFactory;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.springframework.web.multipart.MultipartFile;
    import org.springframework.web.multipart.commons.CommonsMultipartFile;
    
    public class FileUtil {
    
        public MultipartFile fileToMultipartFile(File file) {
            FileItem fileItem = createFileItem(file);
            MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
            return multipartFile;
        }
    
        private static FileItem createFileItem(File file) {
            FileItemFactory factory = new DiskFileItemFactory(16, null);
            FileItem item = factory.createItem("textField", "text/plain", true, file.getName());
            int bytesRead = 0;
            byte[] buffer = new byte[8192];
            try {
                FileInputStream fis = new FileInputStream(file);
                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;
        }
    
    }

      注意:导入的是org.apache.commons下的包,一定记住,我踩过的雷。。。

  • 相关阅读:
    jenkins 使用oclint 扫描 oc 代码
    mac下 jenkins 环境搭建
    jenkins 中 Poll SCM 和 Build periodically 的区别
    表单验证封装,一招学会,永远受用
    浅谈js中的执行环境和执行环境对象
    浅谈php之设计模式基础
    四条地铁线带你通往Ajax的大门
    论js结合数学的应用
    以留言本的开发打开ajax的世界
    初步学习css3之3D动画
  • 原文地址:https://www.cnblogs.com/javasl/p/13834671.html
Copyright © 2020-2023  润新知