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

2018-07-03  本文已影响0人  Hiseico

适用于上传文件使用,不保存到本地磁盘。直接在内存中将上传的文件转换为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();
        }
}
上一篇 下一篇

猜你喜欢

热点阅读