zoukankan      html  css  js  c++  java
  • MultipartFile 和 File的相互转化

    1:MultipartFile 转成File

    public static File multipartFileToFile(MultipartFile file )  {

            File toFile = null;
            try{
                    if(file==null||file.equals("")||file.getSize()<=0){
                        file = null;
                    }else {
                            InputStream ins = file.getInputStream();        //获取MultipartFile的输入流               
                            String filePath =  file.getOriginalFilename();
                            filePath = filePath.substring(filePath.lastIndexOf("/")+1);
                            toFile = new File(filePath);                            //根据老文件名创建一个File对象

                            OutputStream os = new FileOutputStream(file);//根据File创建一个输出流
                            int bytesRead = 0;
                            byte[] buffer = new byte[8192];
                            while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
                                  os.write(buffer, 0, bytesRead);              //将输入流写到输出流中
                            }

                            ins.close();

                            os.close();

                    }
            }catch(Exception e){
                //这里进行异常处理
            }        
            return   toFile;

       } 

    理解:首先以MultipartFile的名字创建一个File对象,然后以MultipartFile为输入流的源头,以新File对象为输出流的目的地,最后进行流的读写即可。

    2:File 转成 MultipartFile

    (1):

    public static MultipartFile fileToMultipartFile( File file )   {

          FileInputStream fileInput = new FileInputStream(file);
          MultipartFile toMultipartFile = new MockMultipartFile("file",file.getName(),"text/plain", IOUtils.toByteArray(fileInput));
          return toMultipartFile;

    理解:以File为输入流的源头,然后将其转成字节数组,最终以字节数组创建MultipartFile。

    (2):

    public static MultipartFile fileToMultipartFile( File file )   {
            FileItem fileItem = createFileItem(file);                               //根据File创建FileItem
            MultipartFile mfile = new CommonsMultipartFile(fileItem);//根据FileItem创建MultipartFile
            return mfile;

    }     

    private static FileItem createFileItem(File file){
            FileItemFactory factory = (FileItemFactory) new DiskFileItemFactory();
            String textFieldName = "textField";
            int num = file.getName().lastIndexOf(".");
            String extFile = file.getName().substring(num);
            FileItem item = factory.createItem(textFieldName, "text/plain", true,"MyFileName" + extFile);//根据File名创建一个FileItem
            int bytesRead = 0;
            byte[] buffer = new byte[8192];
            try {
                FileInputStream fis = new FileInputStream(file);                //以File为源头创建输入流
                OutputStream os = item.getOutputStream();                     //以FileItem为目的地创建输出流
                while ((bytesRead = fis.read(buffer, 0, 8192)) != -1){
                    os.write(buffer, 0, bytesRead);                                       //将输入流写入输出流
                }
                os.close();
                fis.close();
            }catch (IOException e){
                //异常处理
            }
            return item;
        } 

       理解:将File转换成FileItem,最后以FileItem创建MultipartFile

  • 相关阅读:
    在from表单中提交同name数据时,怎么获取所有值
    面试题
    String的创建模式
    spring的事务支持
    微信小程序+java实现附件上传以及下载打开详细过程记录
    spring编写AOP代理上的一点小坑
    java静态内部类的作用
    Python学习 :json、pickle&shelve 模块
    Python学习 :正则表达式
    Python学习 :常用模块(四)----- 配置文档
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13302505.html
Copyright © 2011-2022 走看看