Spring MVC reqsonse实现文件下载

    @RequestMapping("/download")
    public String download2(String fileName, HttpServletRequest request, HttpServletResponse response){
        FileInputStream fis = null;
        try {
            //获取文件对象

            String path = request.getSession().getServletContext().getRealPath("/uploads/" + fileName);
            File file = new File(path);
            System.out.println(path);
            fis = new FileInputStream(path);

            //3.设置response的响应头
            //3.1设置响应头类型:content-type
//            String mimeType = request.getSession().getServletContext().getMimeType(fileName);//获取文件的mime类型
//            response.setHeader("content-type",mimeType);
            //3.2设置响应头打开方式:content-disposition
            response.setHeader("content-disposition","attachment;filename="+fileName);
            //设置文件字节的长度
            response.addHeader("Content-Length", "" + file.length());
            //设置文件的响应类型为任意类型
            response.setContentType("application/octet-stream");
            //4.将输入流的数据写出到输出流中
            ServletOutputStream sos = response.getOutputStream();
            byte[] buff = new byte[1024 * 8];
            int len = 0;
            while((len = fis.read(buff)) != -1){
                sos.write(buff,0,len);
            }
            sos.flush();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {

            try {
                if (fis != null) {
                    fis.close();
                }
            } catch (IOException e) {
            }
        }
        return "success";
    }
posted @ 2020-07-29 21:43  silence022  阅读(21)  评论(0)    收藏  举报