利用SpringMVC下载不同类型文件

网上有看到使用SpringMVC来下载图片,pdf等等,但是仅限于规定文件类型的下载,查找了一下文档,写一个统一下载各种类型文件的Controller。
文件存放路径:
这里写图片描述
下载请求uri:http://localhost:8080/DownloadDemo/download/sample.zip

@RequestMapping("download/{fileName:.+}")
    public void downloadZipResource(HttpServletRequest request, 
                                     HttpServletResponse response, 
                                     @PathVariable("fileName") String fileName) 
    {
        ServletContext context = request.getSession().getServletContext();
        String dataDirectory  = context.getRealPath("/downloads") + "/" + fileName;
        File file = new File(dataDirectory);
        if (file.isFile()) 
        {
            String mimeType = context.getMimeType(dataDirectory);   //直接根据文件的路径名来获取它的MineType,这样就可以灵活的根据请求的文件类型来返回输出流了
            response.setContentType(mimeType);
            response.addHeader("Content-Disposition", "attachment; filename="+fileName);
            try 
            {
                OutputStream os = response.getOutputStream();;
                IOUtils.copy(new FileInputStream(file), os);
                os.flush();
            } 
            catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值