美文网首页
SpringMVC上传的文件在内存中转换为File类型

SpringMVC上传的文件在内存中转换为File类型

作者: Hiseico | 来源:发表于2018-07-03 15:17 被阅读0次

    适用于上传文件使用,不保存到本地磁盘。直接在内存中将上传的文件转换为File类型并保存在内存中。
    适用案例:在Activiti工作流中,将本地的流程文件和流程图打包成ZIP文件上传至工作流系统部署。

    整体思路:将上传文件的MultipartFile对象转换为CommonsMultipartFile对象,并获得上传文件的基本信息。然后创建一个zip格式的临时文件,并使用Apache的commons工具包中的FileUtils的copyInputStreamToFile将CommonsMultipartFile写入到新的临时zip文件中。

     public void upload(MultipartFile resource) {
           //将MultipartFile对象转换为CommonsMultipartFile对象
            CommonsMultipartFile cf = (CommonsMultipartFile)resource;
            //获取上传文件的信息
            DiskFileItem fi = (DiskFileItem) cf.getFileItem();
            //获取MultipartFile对象的文件信息
            File file = fi.getStoreLocation();
            //获取MultipartFile对象的文件全路径,包括文件名
            String filePath = fi.getStoreLocation().getPath();
            //截取MultipartFile对象文件路径,不包括文件名
            int stringIndex=filePath.lastIndexOf("\\");
            filePath=filePath.substring(0,stringIndex);
            //创建一个新的临时文件,用于保存MultipartFile对象转换成File对象的内容
            File bpmnFile = new File(filePath+File.separator+UUID.randomUUID()+".zip");
    
            try {
                //将MultipartFile转换成File对象
                FileUtils.copyInputStreamToFile(resource.getInputStream(), bpmnFile);
            } catch (IOException e) {
                e.printStackTrace();
            }
    }
    

    相关文章

      网友评论

          本文标题:SpringMVC上传的文件在内存中转换为File类型

          本文链接:https://www.haomeiwen.com/subject/ebzduftx.html