doc_getfile.jsp
上传用户:jhtang88
上传日期:2014-01-27
资源大小:28528k
文件大小:3k
源码类别:

Jsp/Servlet

开发平台:

Java

  1. <%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %><%@page import="cn.js.fan.util.*"%><%@page import="cn.js.fan.web.*"%><%@page import="cn.js.fan.module.cms.*"%><%@page import="java.util.*"%><%@page import="java.io.*"%><%@page import="java.net.*"%><%
  2.   int id = ParamUtil.getInt(request, "id");
  3.   int attId = ParamUtil.getInt(request, "attachId");
  4.   int pageNum = 1;
  5.   String pn = ParamUtil.get(request, "pageNum");
  6.   if (StrUtil.isNumeric(pn))
  7.    pageNum = Integer.parseInt(pn);
  8.   Document mmd = new Document();
  9.   mmd = mmd.getDocument(id);
  10.   Attachment att = mmd.getAttachment(pageNum, attId);
  11.   
  12.   String s = Global.getRealPath() + att.getVisualPath() + "/" + att.getDiskName();
  13.   
  14.   att.setDownloadCount(att.getDownloadCount() + 1);
  15.   att.save();
  16.   
  17.   //String s = "e:\tree.mdb"; 
  18.   // RandomAccessFile Ҳʵ,Ȥɽעȥ,ע͵ FileInputStream 汾
  19.   //java.io.RandomAccessFile raf = new java.io.RandomAccessFile(s,"r");
  20.   java.io.File f = new java.io.File(s);
  21.   java.io.FileInputStream fis = new java.io.FileInputStream(f);
  22.   response.reset();
  23.   //response.setHeader("Server", "playyuer@Microshaoft.com");
  24.   //߿ͻϵ߳
  25.   //Ӧĸʽ:
  26.   //Accept-Ranges: bytes
  27.   response.setHeader("Accept-Ranges", "bytes");
  28.   long p = 0;
  29.   long l = 0;
  30.   //l = raf.length();
  31.   l = f.length();
  32.   //ǵһ,ûжϵ,״̬Ĭϵ 200,ʽ
  33.   //Ӧĸʽ:
  34.   //HTTP/1.1 200 OK
  35.   if (request.getHeader("Range") != null) //ͻصļĿʼֽ
  36.   {
  37.    //ļķΧȫ,ͻֲ֧ʼļ
  38.    //Ҫ״̬
  39.    //Ӧĸʽ:
  40.    //HTTP/1.1 206 Partial Content
  41.    response.setStatus(javax.servlet.http.HttpServletResponse.SC_PARTIAL_CONTENT);//206
  42.    //еõʼֽ
  43.    //ĸʽ:
  44.    //Range: bytes=[ļĿʼֽ]-
  45.    p = Long.parseLong(request.getHeader("Range").replaceAll("bytes=","").replaceAll("-",""));
  46.   }
  47.   //صļ()
  48.   //Ӧĸʽ:
  49.   //Content-Length: [ļܴС] - [ͻصļĿʼֽ]
  50.   response.setHeader("Content-Length", new Long(l - p).toString()); 
  51.   if (p != 0)
  52.   {
  53.    //Ǵʼ,
  54.    //Ӧĸʽ:
  55.    //Content-Range: bytes [ļĿʼֽ]-[ļܴС - 1]/[ļܴС]
  56.    response.setHeader("Content-Range","bytes " + new Long(p).toString() + "-" + new Long(l -1).toString() + "/" + new Long(l).toString());
  57.   }
  58.   //response.setHeader("Connection", "Close"); //д˾仰 IE ֱ
  59.   //ʹͻֱ
  60.   //Ӧĸʽ:
  61.   //Content-Type: application/octet-stream
  62.   response.setContentType("application/octet-stream");
  63.   //ΪͻָĬϵļ
  64.   //Ӧĸʽ:
  65.   //Content-Disposition: attachment;filename="[ļ]"
  66.   //response.setHeader("Content-Disposition", "attachment;filename="" + s.substring(s.lastIndexOf("\") + 1) + """); // RandomAccessFile Ҳʵ,Ȥɽעȥ,ע͵ FileInputStream 汾
  67.   response.setHeader("Content-Disposition", "attachment;filename="" + StrUtil.GBToUnicode(att.getName()) + """);
  68.   //raf.seek(p);
  69.   fis.skip(p);
  70.   byte[] b = new byte[1024]; 
  71.   int i;
  72.   //while ( (i = raf.read(b)) != -1 ) // RandomAccessFile Ҳʵ,Ȥɽעȥ,ע͵ FileInputStream 汾
  73.   while ( (i = fis.read(b)) != -1 )
  74.   {
  75.    response.getOutputStream().write(b,0,i);
  76.   }
  77.   //raf.close();// RandomAccessFile Ҳʵ,Ȥɽעȥ,ע͵ FileInputStream 汾
  78.   fis.close();
  79. %>