MultipartFile和File 的相互转换

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItem;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.http.entity.ContentType;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

/**
 * @author 
 * @Title: fileTran.java
 * @Package 
 * @Description: 文件转换
 * @date 2019年03月12日 17:37
 */
public class fileTran {

    public static void main(String[] args) throws IOException {

        //File 转 MultipartFile 使用 MockMultipartFile方法一
        File file = new File("D:\\testmultif.txt");
        FileInputStream input = new FileInputStream(file);
        MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "text/plain", IOUtils.toByteArray(input));



        //File 转 MultipartFile 使用 CommonsMultipartFile 方法二
        File file3 = new File("D:\\testmultif.txt");
        // 创建fileItem,具体方法参见第三节
        FileItem fileItem = new DiskFileItem(
                "file", // 表单参数名
                ContentType.APPLICATION_OCTET_STREAM.toString(), // 文件类型
                false, // 是否为表单格式
                file3.getName(), // 文件名
                10240, // 超过多少byte存在磁盘上
                file3// 文件存储位置
        );
        // 将File内容写入fileItem,使用org.apache.commons.io.IOUtils
        IOUtils.copy(new FileInputStream(file), fileItem.getOutputStream());
        MultipartFile multipartFile2 = new CommonsMultipartFile(fileItem);

        //MultipartFile 转 File 方法二
        File file2 = new File("D:\\testmultif2.txt");
        FileUtils.copyInputStreamToFile(multipartFile.getInputStream(), file2);

        //MultipartFile 转 File 临时文件存放在内存中 方法二
        CommonsMultipartFile cf = (CommonsMultipartFile) multipartFile2;
        DiskFileItem df = (DiskFileItem) cf.getFileItem();
        File f = df.getStoreLocation();

    }
}
发布了51 篇原创文章 · 获赞 18 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/m0_37882063/article/details/88553040
今日推荐