小菜毛毛技術分享

          與大家共同成長

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            164 Posts :: 141 Stories :: 94 Comments :: 0 Trackbacks

          <%@ page import="java.io.File" %>
          <%@ page import="java.io.IOException" %>
          <%@ page import="java.io.OutputStream" %>
          <%@ page import="java.io.RandomAccessFile" %>
          <%!
              public void downloadFile(HttpServletRequest request, HttpServletResponse response, File file) throws IOException {

                  RandomAccessFile raf = new RandomAccessFile(file, "r");
                  java.io.FileInputStream fis = new java.io.FileInputStream(raf.getFD());
                  response.setHeader("Server", "www.trydone.com");
                  response.setHeader("Accept-Ranges", "bytes");
                  long pos = 0;
                  long len;
                  len = raf.length();
                  if (request.getHeader("Range") != null) {
                      response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT);
                      pos = Long.parseLong(request.getHeader("Range")
                              .replaceAll("bytes=", "")
                              .replaceAll("-", "")
                      );
                  }
                  response.setHeader("Content-Length", Long.toString(len - pos));
                  if (pos != 0) {
                      response.setHeader("Content-Range", new StringBuffer()
                              .append("bytes ")
                              .append(pos)
                              .append("-")
                              .append(Long.toString(len - 1))
                              .append("/")
                              .append(len)
                              .toString()
                      );
                  }
                  response.setContentType("application/octet-stream");
                  response.setHeader("Content-Disposition", new StringBuffer()
                          .append("attachment;filename=\"")
                          .append(file.getName())
                          .append("\"").toString());
                  raf.seek(pos);
                  byte[] b = new byte[2048];
                  int i;
                  OutputStream outs = response.getOutputStream();
                  while ((i = raf.read(b)) != -1) {
                      outs.write(b, 0, i);
                  }
                  raf.close();
                  fis.close();
              }

          %>
          <%
              String filePath = request.getParameter("file");
              filePath = application.getRealPath(filePath);
              File file = new File(filePath);
              downloadFile(request, response, file);
          %>

          posted on 2010-01-19 17:28 小菜毛毛 閱讀(880) 評論(0)  編輯  收藏 所屬分類: J2EE相關技術與框架
          主站蜘蛛池模板: 梨树县| 哈巴河县| 手游| 四会市| 册亨县| 南平市| 灯塔市| 巨野县| 西乡县| 依安县| 厦门市| 民县| 周口市| 马边| 晋州市| 农安县| 图们市| 浦江县| 柳河县| 正镶白旗| 乐清市| 峨山| 长宁县| 金乡县| 凤城市| 正镶白旗| 广安市| 延津县| 库伦旗| 安徽省| 景东| 崇阳县| 九寨沟县| 嘉善县| 张家界市| 灵武市| 临海市| 滁州市| 水城县| 华亭县| 武乡县|