青梧inn的gravatar头像
青梧inn 2018-04-24 22:35:08
SpringMVC处理文件上传下载

文件上传表单:

<form action="con/upload.do" method="post" enctype="multipart/form-data">  
     <input type="file" name="file" />  
     <input  type="submit" value="保存"/>  
</form>  

后台controller:

  @RequestMapping(value="/upload",method=RequestMethod.POST)
     public String upload(HttpServletRequest request,
            //@RequestParam("description") String description,
            @RequestParam("file") MultipartFile file) throws Exception {

       // System.out.println(description);
        //如果文件不为空,写入上传路径
        if(!file.isEmpty()) {
            //上传文件(目标)路径
            String path = request.getServletContext().getRealPath("/static/uploadfile/");
            //上传文件名
            String filename = file.getOriginalFilename();
            //String fileType = originalFileName.substring(originalFileName.indexOf(".") + 1);//截取文件拓展名.jpg
            String persistFileUrl = "static/uploadfile/"+filename;//持久化路径
            File filepath = new File(path,filename);
            //判断路径是否存在,如果不存在就创建一个
            if (!filepath.getParentFile().exists()) { 
                filepath.getParentFile().mkdirs();
            }
            //将上传文件保存到一个目标文件当中
            file.transferTo(new File(path + File.separator + filename));

            Contact con = new Contact();
            con.setCONTACT_ID(45);
            con.setIMG(persistFileUrl);//将文件存储路径持久化数据库
            contactService.addOrUpdateImg(con);
            return "redirect:list.do";
        } else {
            return "error";
        }

     }

文件下载页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>文件下载</title>
</head>
<body>
<h3>文件下载</h3>
<a href="download?filename=${requestScope.user.image.originalFilename}">
   ${requestScope.user.image.originalFilename }
</a>
</body>
</html>

后台Controller:

/**
      * 文件下载
      * @param request
      * @param filename
      * @param model
      * @return
      * @throws Exception
      */
     @RequestMapping(value="/download")
     public ResponseEntity<byte[]> download(HttpServletRequest request,
             @RequestParam("filename") String filename,
             Model model)throws Exception {
        //下载文件路径
        String path = request.getServletContext().getRealPath("/images/");
        File file = new File(path + File.separator + filename);
        HttpHeaders headers = new HttpHeaders();  
        //下载显示的文件名,解决中文名称乱码问题  
        String downloadFielName = new String(filename.getBytes("UTF-8"),"iso-8859-1");
        //通知浏览器以attachment(下载方式)打开图片
        headers.setContentDispositionFormData("attachment", downloadFielName); 
        //application/octet-stream : 二进制流数据(最常见的文件下载)。
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),    
                headers, HttpStatus.CREATED);  
     }

 


打赏
最近浏览
王明科  LV4 2019年12月9日
inhv  LV18 2019年8月15日
geekape 2019年7月5日
暂无贡献等级
ypt520  LV7 2019年7月1日
低调人  LV38 2019年5月29日
haozhen 2019年5月27日
暂无贡献等级
zan183  LV6 2019年5月18日
lishouxing 2019年4月25日
暂无贡献等级
best2018  LV46 2019年4月16日
sfghi123  LV1 2019年4月12日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友