• Java文件下载


    ##文件下载需求:

      1.页面显示超链接

      2.点击超链接后弹出下载显示框

      3.完成图片文件下载

    ##分析:

      1.超链接指向的资源如果能够被浏览器解析,则被浏览器显示,如果不能解析,则弹出下载提示框,不满足要求

      2.任何资源都必须弹出下载提示框

      3.使用响应头设置资源打开方式:

        *content-disposition:attachment;filename==XXX

    ##步骤:

      1.定义页面,编辑超链接href属性,指向Servlet,传递filename

      2.定义Servlet

        1.获取文件名称

        2.使用字节输出流加载文件进去内存

        3.指向response的响应头:content-disposition:attachment;filename==XXX

        4.将数据写到response输出流

            //1.获取请求参数,文件名称
            String filename=request.getParameter("filename");
            //2.使用字节输出流加载文件进内存
            //2.1打开文件服务器路径
            ServletContext servletContext=this.getServletContext();
            String realPath = servletContext.getRealPath("/img/" + filename);//文件在img目录下
            //2.2用字节流关联
            FileInputStream fis=new FileInputStream(realPath);
    
            //3.设置response得响应头
            //获取文件类型
            String mimeType = servletContext.getMimeType(filename);
            //3.1设置响应头类型:content-type
            response.setHeader("context-type",mimeType);
            //3.2设置响应头打开方式:content-disposition
            response.setHeader("content-disposition","attachment;filename="+filename);
    
            //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);
            }
            fis.close();
    

      原始代码<--

    html页面:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <a href="/day15/img/FullSizeRender.jpg">图片1</a>
    <hr>
        <a href="/day15/downloadServlet?filename=FullSizeRender.jpg">图片1</a>
    </body>
    </html>
    

      

  • 相关阅读:
    将本地html文件拖到IE8浏览器无法打开,直接弹出一个下载的对话框
    ImageMagick
    64位win8.1系统 运行 32位程序,文件夹路径是中文遇到问题
    Dreamweaver
    JBOSS Spring Web
    spring web应用
    SQL PKG示例
    SQL分区表示例
    Java RMI 框架(远程方法调用)
    Java NIO 进程间通信
  • 原文地址:https://www.cnblogs.com/stormtides/p/12748347.html
Copyright © 2020-2023  润新知