admin 发表于 2022-8-5 13:05:23

对象File转换MultipartFile对象方法,便于上传到文件服务器

package com.mygeed.smart.core.core.utils.poi;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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;
import java.io.OutputStream;

/**
*
* `7MMM.   ,MMF'`YMM'   `MM' .g8"""bgd `7MM"""YMM`7MM"""YMM`7MM"""Yb.
*MMMb    dPMM    VMA   ,V .dP'   `M   MM    `7    MM    `7    MM    `Yb.
*M YM   ,M MM   VMA ,VdM'       `   MM   d      MM   d      MM   `Mb
*MMbM' MM      VMMP   MM            MMmmMM      MMmmMM      MM      MM
*MYM.P'MM       MM    MM.    `7MMF' MM   Y,   MM   Y,   MM   ,MP
*M`YM'   MM       MM    `Mb.   MM   MM   ,M   MM   ,M   MM    ,dP'
*.JML. `'.JMML.   .JMML.    `"bmmmdPY .JMMmmmmMMM .JMMmmmmMMM .JMMmmmdP'   Art By Jack Wu
*
* @Author Jack Wu
* @Link 微信号:MYGEEDS
*          QQ:871213180
* @Descrition 对象File转换MultipartFile对象方法
*
*/
public class File2MultiPartFile<T> {

    private static final Logger log = LoggerFactory.getLogger(File2MultiPartFile.class);

    /**
   * 对象File转换MultipartFile对象方法
   *
   * @param file
   * @return
   */
    public MultipartFile convert(File file) {
      try {
            FileItem fileItem = createFileItem(file);
            MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
            return multipartFile;
      } catch (Exception e) {
            throw new RuntimeException(e);
      } finally {
            if (file != null)
                file.deleteOnExit();
      }
    }

    /**
   * File对象转FileItem对象方法
   *
   * @param file
   * @return
   */
    private 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;
      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;
    }
}
页: [1]
查看完整版本: 对象File转换MultipartFile对象方法,便于上传到文件服务器