SpringMvc文件上传下载

//文件上传
@RequestMapping(value = "saveImg", method = RequestMethod.POST)
public ModelAndView uploadImage(@RequestParam("image") MultipartFile multipartFile, HttpServletRequest request, ModelAndView model) throws Exception {
    //文件上传路径
    String path = request.getServletContext().getRealPath("/");
    String q = path.substring(0, path.lastIndexOf("\\"));
    String e = q.substring(0, q.lastIndexOf("\\"));
    e += "/img";
    System.out.println(path.lastIndexOf("\\"));
    System.out.println(q);
    System.out.println(e);
    //上传文件名
    String filename = multipartFile.getOriginalFilename();
    File filePath = new File(e, filename);
    System.out.println(path);
    System.out.println(filePath.getParentFile());
    System.out.println(filePath.getAbsolutePath());
    //判断当前路径是否存在,如果不存在就创建一个
    if (!filePath.getParentFile().exists()) {
        filePath.getParentFile().mkdirs();
    }
    //将上传文件保存到一个目标文件中
    multipartFile.transferTo(new File(e + File.separator + filename));
    //将文件名字保存在model
    model.addObject("list",filename);
    model.setViewName("success");
    return model;
 
}
 
//文件下载
@RequestMapping("download")
public ResponseEntity<byte[]> download(HttpServletRequest request,@RequestParam("name") String fileName,Model model) throws IOException {
    //文件下载路径
    String path = request.getServletContext().getRealPath("/");
    String q = path.substring(0, path.lastIndexOf("\\"));
    String e = q.substring(0, q.lastIndexOf("\\"));
    e += "/img";
    File file = new File(e+File.separator+fileName);
    HttpHeaders headers = new HttpHeaders();
    //下载显示的文件名,解决中文名乱码·问题
    String downloadName = new String(fileName.getBytes("UTF-8"),"iso-8859-1");
    //通知浏览器以attachment(下载方式)打开图片
    headers.setContentDispositionFormData("attachment",downloadName);
    //application/octet-stream; 二进制流数据(最常见的文件下载)
    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    //201 HttpStatus.CREATED
    return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值