文件的上传与下载

    xiaoxiao2021-03-25  122

    @RequestMapping("/saveXXX") public String saveXXX(@RequestParam("attachment") MultipartFile attachment,ProjectPurchase projectPurchase,HttpServletRequest req,HttpServletResponse response,HttpSession session) { // 接收附件,并将文件路径保存到数据库 x.setPurchaseAttachment(this.saveFile(req, attachment, xxx.getId())); // 保存附件路径 xxxService.updateXXX(x); // ,前端是表单提交,重定向到原页面 return "redirect:/ooo/xxx.jsp"; } //保存文件 public String  saveFile(HttpServletRequest req, MultipartFile file,String id) { // 判断文件是否为空 if (!file.isEmpty()) { try { FileUtil.copySysPath(req); //设置保存路径 String path=FileUtil.getSystemUploadPath("/../attachment/"+id+"/"+file.getOriginalFilename()); // 把文件写到指定的路径中   File saveDir = new File(path);  if (!saveDir.getParentFile().exists()) saveDir.getParentFile().mkdirs(); // 转存文件 file.transferTo(saveDir); //return文件路径 return "/attachment/"+id+"/"+ file.getOriginalFilename(); } catch (Exception e) { e.printStackTrace(); } } return ""; } //文件下载 @RequestMapping("/downloadxxx ") public void downloadAttachment(HttpServletRequest req,HttpServletResponse res){ //   获取网站部署路径(通过ServletContext对象),用于确定下载文件位置,从而实现下载   String path = servletContext.getRealPath("/")+"../"+purchaseManageService.findAttachment(req.getParameter("id"));   //   设置下载文件   String name=path.substring(path.lastIndexOf("/")+1); //   1.设置文件ContentType类型,自动判断为下载文件类型   res.setContentType("multipart/form-data");   //后面使用发现如果文件名为中文,则导出有误。 //度娘修改方法: if (req.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) {   name = URLEncoder.encode(name, "UTF-8"); } else {   name = new String(name.getBytes("UTF-8"), "ISO8859-1");   }   //   2.设置文件头/设置下载文件名   res.setHeader("Content-Disposition", "attachment;fileName="+name);   OutputStream out;   //  通过文件路径获得File对象   File file = new File(path);   try {   FileInputStream is = new FileInputStream(file);   // 3.通过response获取OutputStream对象(out)   out = res.getOutputStream();   int len = 0;   byte[] buffer = new byte[1024];   while ((len=is.read(buffer))>0){   // 4.写到输出流(out)中   out.write(buffer,0,len);   }   is.close();   out.close();   out.flush();   } catch (IOException e) {   e.printStackTrace();   }   }

     

    转载请注明原文地址: https://ju.6miu.com/read-4035.html

    最新回复(0)