在SpringMVC中进行文件的上传与下载首先需要添加两个jar包,然后将这两个jar包拷贝到项目的lib目录中。
然后向SpringMVC配置文件spring-mvc.xml中添加文件上传相关配置
在Controller中编写文件上传
@Controller
@RequestMapping("/FileDemo")
public class FileDemoController {
@RequestMapping("/toUpload")
public String toUpload(){
return “/fileDemo/upload”;
}
@RequestMapping("/upload")
public ModelAndView upload(@RequestParam(value=“file”,required=true) MultipartFile myFile)
throws IOException{
String strFileName="";
//判断是否上传文件
if(myFile.isEmpty()){
System.out.println(“未上传文件”);
}else{
//获取上传文件的属性
System.out.println(“文件大小”+myFile.getSize());
System.out.println(“文件类型”+myFile.getContentType());
System.out.println(“文件名称”+myFile.getName());
System.out.println(“文件原名”+myFile.getOriginalFilename());
System.out.println("-------------------------------------");
//文件上传路径
String upDir=“F:/文件下载/”;
//获取文件原名
String fullName=myFile.getOriginalFilename();
//获取扩展名称
String ext=fullName.substring(fullName.lastIndexOf(’.’));
//拼接文件保存的名称
String FileName=System.nanoTime()+ext;
//保存文件
FileUtils.writeByteArrayToFile(new File(upDir,FileName),myFile.getBytes());
System.out.println(“保存的文件名称为:”+FileName);
strFileName=FileName;
}
ModelAndView mv=new ModelAndView("/fileDemo/uploadSuccess");
mv.addObject(“fileName”,strFileName);
return mv;
}
在Controller中编写文件下载
@RequestMapping("/download")
public ResponseEntity<byte[]> download(String fileName) throws IOException {
//文件上传路径
String upDir=“F:/文件下载/”;
//获取文件
File file = new File(upDir,fileName);
//设置header
HttpHeaders headers = new HttpHeaders();
//application/octet-stream二进制流数据(最常见的文件下载)
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
// //通知浏览器以attachment(下载方式) 下载文件,文件名称为指定名称
headers.setContentDispositionFormData(“attachment”, fileName);
//返回文件下载相关参数
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
}
一个简单的上传文件form表单
点击上传
点击上传的文件即可下载,同时将文件下载到指定的文件夹中。