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.方法好不好用,实践之后才知道,程序猿可在这些方法的基础之上封装适合自己的方法;