SpringMVC如何实现既支持文件上传又支持文件下载的功能?

2026-04-10 14:311阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计524个文字,预计阅读时间需要3分钟。

SpringMVC如何实现既支持文件上传又支持文件下载的功能?

文件上传时,首先将表单的method属性设置为POST,并将enctype属性设置为multipart/form-data。这样,只有在用户上传文件的情况下,文件二进制数据才会被提交给服务器。同时,需要使用commons-FileUpload.jar库来处理文件上传。

SpringMVC如何实现既支持文件上传又支持文件下载的功能?

file.text

文件上传首先将Form表单的method方式这是为POST,并且将enctype设置为诶multipart/form-data,只有在这种情况下用户 的文件二进制数据会被提交给服务器。同时需要commons-FileUpload.jar以及commons-io.jar. 例子: form表单

文件描述: 请选择文件:
控制器 private static final Log logger=LogFactory.getLog(Upload.class); @RequestMapping(value="/upload",method=RequestMethod.POST) public String upload(@RequestParam("description")String description, @RequestParam("file")MultipartFile file,HttpServletRequest request)throws Exception{ System.out.println(description); //如果文件不为空,写入上传路径 if(!file.isEmpty()){ //上传文件路径 String path=request.getRealPath("WEB-INF/file"); logger.info(path); //上传文件名 String filename=file.getOriginalFilename(); logger.info(filename); File filepath=new File(path,filename); logger.info(filepath); //判断路径是否存在,不存在则创建 if(!filepath.getParentFile().exists()){ filepath.getParentFile().mkdirs(); } //将上传文件保存到一个目标文件中,其中File.separator是为了防止Windows和Linux下路径斜杠的区别 file.transferTo(new File(path+File.separator+filename)); return "success"; }else{ return "error"; } } 配置文件中装配Bean

10485760

UTF-8 成功后跳转的页面 ${requestScope.filename} 文件下载主要用到了ResponseEntity类型很方便的定义HttpHeaders以及HttpStatus。 当点击超链接后跳转到控制器download中,如下: @RequestMapping(value="download") public ResponseEntity download(HttpServletRequest request,@RequestParam("filename") String filename ,Model model) throws Exception{ //下载路径 String path=request.getRealPath("WEB-INF/file"); //完整的路径包括下载文件的名称 File file=new File(path+File.separator+filename); HttpHeaders headers=new HttpHeaders(); //解决下载文件中文乱码问题 String downloadFileName=new String(filename.getBytes("UTF-8"),"iso-8859-1"); //通知游览器以attachment(下载方式)打开文件 headers.setContentDispositionFormData("attachment", downloadFileName); //application/octet-stream:二进制流数据,最常见的文件下载 headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); return new ResponseEntity (FileUtils.readFileToByteArray(file),headers,HttpStatus.CREATED); }

本文共计524个文字,预计阅读时间需要3分钟。

SpringMVC如何实现既支持文件上传又支持文件下载的功能?

文件上传时,首先将表单的method属性设置为POST,并将enctype属性设置为multipart/form-data。这样,只有在用户上传文件的情况下,文件二进制数据才会被提交给服务器。同时,需要使用commons-FileUpload.jar库来处理文件上传。

SpringMVC如何实现既支持文件上传又支持文件下载的功能?

file.text

文件上传首先将Form表单的method方式这是为POST,并且将enctype设置为诶multipart/form-data,只有在这种情况下用户 的文件二进制数据会被提交给服务器。同时需要commons-FileUpload.jar以及commons-io.jar. 例子: form表单

文件描述: 请选择文件:
控制器 private static final Log logger=LogFactory.getLog(Upload.class); @RequestMapping(value="/upload",method=RequestMethod.POST) public String upload(@RequestParam("description")String description, @RequestParam("file")MultipartFile file,HttpServletRequest request)throws Exception{ System.out.println(description); //如果文件不为空,写入上传路径 if(!file.isEmpty()){ //上传文件路径 String path=request.getRealPath("WEB-INF/file"); logger.info(path); //上传文件名 String filename=file.getOriginalFilename(); logger.info(filename); File filepath=new File(path,filename); logger.info(filepath); //判断路径是否存在,不存在则创建 if(!filepath.getParentFile().exists()){ filepath.getParentFile().mkdirs(); } //将上传文件保存到一个目标文件中,其中File.separator是为了防止Windows和Linux下路径斜杠的区别 file.transferTo(new File(path+File.separator+filename)); return "success"; }else{ return "error"; } } 配置文件中装配Bean

10485760

UTF-8 成功后跳转的页面 ${requestScope.filename} 文件下载主要用到了ResponseEntity类型很方便的定义HttpHeaders以及HttpStatus。 当点击超链接后跳转到控制器download中,如下: @RequestMapping(value="download") public ResponseEntity download(HttpServletRequest request,@RequestParam("filename") String filename ,Model model) throws Exception{ //下载路径 String path=request.getRealPath("WEB-INF/file"); //完整的路径包括下载文件的名称 File file=new File(path+File.separator+filename); HttpHeaders headers=new HttpHeaders(); //解决下载文件中文乱码问题 String downloadFileName=new String(filename.getBytes("UTF-8"),"iso-8859-1"); //通知游览器以attachment(下载方式)打开文件 headers.setContentDispositionFormData("attachment", downloadFileName); //application/octet-stream:二进制流数据,最常见的文件下载 headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); return new ResponseEntity (FileUtils.readFileToByteArray(file),headers,HttpStatus.CREATED); }