@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