HttpServletResponse

使用response下载文件

首先使用context.getRealPath获取当前web应用下目标文件在tomcat服务器中的真实路径。
然后通过targetString.substring(targetString.lastIndexOf("\\") +1)来获取目标文件的文件名。
然后通过响应头设置resp.setHeader("Content-disposition","attachment;filename=" + filename)来指定当前响应格式为附件下载。(如果文件名为中文则需要对文件名进行额外的编码转换)

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext context = this.getServletContext();

        String realPath = context.getRealPath("/下载测试.jpg");
        String filename = realPath.substring(realPath.lastIndexOf("\\")+1);

//      在使用中文文件名时需要使用URLEncoder.encode(varName, encodeType)进行编码准换
//      resp.setHeader("Content-disposition","attachment;filename=" + filename)
        resp.setHeader("Content-disposition","attachment;filename="
                + URLEncoder.encode(filename, "utf-8"));

        FileInputStream in = new FileInputStream(realPath);
        int len = 0;
        byte[] buffer = new byte[1024];
        ServletOutputStream out = resp.getOutputStream();
        while((len=in.read(buffer))!=-1) {
            out.write(buffer, 0, buffer.length);
        }

        in.close();
        out.close();
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容