java springmvc 上传后台_SpringMVC处理文件上传下载

文件上传表单:

后台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";

}

}

文件下载页面:

pageEncoding="UTF-8"%>

文件下载

文件下载

${requestScope.user.image.originalFilename }

后台Controller:/**

* 文件下载

* @param request

* @param filename

* @param model

* @return

* @throws Exception

*/

@RequestMapping(value="/download")

public ResponseEntity 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(FileUtils.readFileToByteArray(file),

headers, HttpStatus.CREATED);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值