美文网首页
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