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.方法好不好用,实践之后才知道,程序猿可在这些方法的基础之上封装适合自己的方法;
  转载:https://blog.csdn.net/TTTZZZTTTZZZ/article/details/82914652

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值