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();

    }
}

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值