File、FileItem、MultipartFile三种文件类型转换

这三种文件类型的中转都是File类型。主要实现MultipartFile转换为FileItem,过程:MultipartFile->File->FileItem。

    //MultipartFile类型转为File类型
    fileIns = multipartFile.getInputStream();
    File multoFile = new File("mulToFilePath");
    inputStreamToFile(fileIns,multoFile);
       
    //File类型转为FileItem类型
    fileItem = createFileItem(multoFile ,"itemFileName");//FileItem不用指定路径,内存形势存在。
    fileIns.close();

    /**
     * 输入流转File类型
     * @param ins
     * @param file
     */
    public static void inputStreamToFile(InputStream ins, File file) {
        try {
            OutputStream os = new FileOutputStream(file);
            int bytesRead = 0;
            byte[] buffer = new byte[8192];
            while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
                os.write(buffer, 0, bytesRead);
            }
            os.close();
            ins.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

补充:FileItem->File

toFile = new File(file.getOriginalFilename());
fileItem.write(toFile);

 

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
文件上传时,一般使用MultipartFile类型接收上传的文件。但是有时候我们需要将本地的File类型的文件换成MultipartFile类型,这时候可以使用commons-fileupload库中的FileItem来实现换,具体步骤如下: 1. 引入commons-fileupload的jar包。 2. 创建一个File对象,指定要换的文件路径。 3. 调用getMultipartFile()方法,将File换成FileItem类型。 4. 再将FileItem类型转换MultipartFile类型。 下面是具体代码实现: ```java File file = new File("D://resume/"); FileItem fileItem = this.getMultipartFile(file,"templFileItem"); MultipartFile multipartFile = new CommonsMultipartFile(fileItem); ``` 其中,`getMultipartFile`方法的实现可以参考如下代码: ```java public FileItem getMultipartFile(File file, String field) throws Exception { DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(1024 * 1024); factory.setRepository(new File(System.getProperty("java.io.tmpdir"))); String fileName = file.getName(); String contentType = new MimetypesFileTypeMap().getContentType(file); FileItem item = factory.createItem(field, contentType, true, fileName); try (InputStream input = new FileInputStream(file); OutputStream os = item.getOutputStream();) { int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = input.read(buffer, 0, 8192)) != -1) { os.write(buffer, 0, bytesRead); } } catch (IOException e) { throw new Exception("Error occurred while creating the file item." + e.getMessage()); } return item; } ``` 这样,我们就可以将本地的File类型的文件换成MultipartFile类型,并进行上传操作了。 --相关问题--:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值