zoukankan      html  css  js  c++  java
  • java下载文件

    文件下载不需要第三包就是靠文件流、字节输入输出流实现。

    <table>
          <tr>
              <td align="right">
              <a href="download.jsp?path=<%=getServletContext().getRealPath("123.png") %>">下载</a></td>
          </tr>
          </table>

    download.jsp

    <%
            response.setCharacterEncoding("utf-8");
            String pathname = request.getParameter("path");
            pathname = new String(pathname.getBytes("iso-8859-1"));
            File file = new File(pathname);
            InputStream ins = new FileInputStream(file);
            OutputStream os = response.getOutputStream();
            BufferedInputStream bis = new BufferedInputStream(ins);
            BufferedOutputStream bos = new BufferedOutputStream(os);
            response.addHeader("Content-Disposition","attachment;filename="+new String(file.getName().getBytes("utf-8"),"iso-8859-1"));
            response.addHeader("Content-Length",file.length()+"");
            response.setContentType("application/octet-stream");
            int len = 0;
            byte[] bys = new byte[1024];
            while((len=ins.read(bys))!=-1){
                bos.write(bys);
                bos.flush();
            }
            out.clear();
            out = pageContext.pushBody();
            bos.close();
            bis.close();
         %>

    上述代码中调用了out.clear()和pageContext.pushBody()方法,是因为在JSP页面中内置有out,再使用response.getOutStream()方法会抛出java.lang.IllegalStateException异常,不过上述代码中本人去掉这两行也没错。

  • 相关阅读:
    C# 中的高性能计时器(Daniel Strigl著,野比译)(转)
    C#中SerialPort类 随笔
    迭代器
    枚举数与可枚举类型(笔记)
    jQuery的关注与学习
    敏捷开发的4句宣言 大数据
    bat脚本
    c++动态库中回调函数使用
    C++中遍历lua table
    vs2010编译release版本却依赖debug版本库msvcrd100.dll
  • 原文地址:https://www.cnblogs.com/tuifeideyouran/p/4345654.html
Copyright © 2011-2022 走看看