SpringMVC文件上传之MultipartFile转File

1.在使用springmvc作为项目框架的实践中,很多时候,我们都需要进行文件的上传和下载,但springmvc内置的MultipartFile文件类型有时候并不符合我们的操作要求,所以有时候会很麻烦;特别是遇到一些比较奇葩的路径问题。
2.本篇博客的重点放在:将MultipartFile文件类型转换成我们熟练操作的File文件类型:

实例


/**
 * SpringMVC文件上传之MultipartFile转File
 * @author hqc
 *
 */
@Service
@Transactional(readOnly = true)
public class InformationService {
    /**
     * MultipartFile转File
     * @param tempfile
     * @return
     */
    public void inforManaAdd(HttpServletRequest request,MultipartFile multipartfile) throws IOException {

        //方法1:在指定目录,生成临时文件,然后再转换
        if(!multipartfile.isEmpty()){

            //在根目录下创建一个tempfileDir的临时文件夹
            String contextpath = request.getContextPath()+"/tempfileDir";
            File f = new File(contextpath); 
            if(!f.exists()){
                f.mkdirs();
            }

            //在tempfileDir的临时文件夹下创建一个新的和上传文件名一样的文件
            String filename = multipartfile.getOriginalFilename();
            String filepath = contextpath+"/"+filename;
            File newFile = new File(filepath);

            //将MultipartFile文件转换,即写入File新文件中,返回File文件
            CommonsMultipartFile commonsmultipartfile = (CommonsMultipartFile) multipartfile;
            File file = commonsmultipartfile.transferTo(newFile);
            System.out.println("转换之后的文件:"+file);

            //如果不需要File文件可删除
            /*if(file.exists()){
                file.delete();
            }*/
        }

        //方法2:不生成临时文件,直接转换
         if(!multipartfile.isEmpty()){
            CommonsMultipartFile commonsmultipartfile = (CommonsMultipartFile) multipartfile;
            DiskFileItem diskFileItem = (DiskFileItem) commonsmultipartfile.getFileItem();  
            File file = diskFileItem.getStoreLocation();
            System.out.println("转换之后的文件:"+file);

            //如果不需要File文件可删除
            /*if(file.exists()){
                file.delete();
            }*/         
         }
    }
}

总结

  1.MultipartFile转File的方法是有很多种的,上面只介绍两种基础简单的,程序猿可按需获取;
  2.方法好不好用,实践之后才知道,程序猿可在这些方法的基础之上封装适合自己的方法;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值