日期:2014-05-17  浏览次数:20778 次

大附件下载java.io.IOException: 拒绝访问。
写在Servlet服务器的代码   
System.out.println("开始下载");
//    InputStream stream=request.getInputStream(); //锟斤拷取锟酵伙拷锟剿达拷锟酵癸拷4锟斤拷锟斤拷
//    String string=getReadToString(stream);
    System.out.println("stream="+string);
    JSONObject json=JSONObject.fromObject(string);
    InputStreamReader inputStreamReader =null;
    RandomAccessFile random = null;
    FileChannel channel = null;
    byte[] bytes=null;
    BufferedOutputStream outStream = null;
    ServletOutputStream sos = null;
    try {
//参数设值
        int startsSize=json.getInt("startPosition");
        int outSize=json.getInt("endPosition");
        String filepath=json.getString("downFileDir");

        StringBuffer buffer=null;

        random = new RandomAccessFile(filepath,"r");
        channel = random.getChannel();
        long fileSize = random.length();    //锟侥硷拷锟斤拷小
        //response.setContentType("application/pdf");
        filepath = new String(filepath.getBytes("gb2312"), "ISO8859-1");
    //设返回文件大小
           response.setContentLength((int) fileSize);
          bytes= new byte[(int)(outSize-startsSize)];
          MappedByteBuffer out =channel.map(MapMode.READ_ONLY,(startsSize),(outSize));
          out.get(bytes);     
          clean(out);//清空MappedByteBuffer句柄
          System.out.println(out+"out");
//向客户端输出流
          outStream = new BufferedOutputStream(response.getOutputStream());
          outStream.write(bytes,0,bytes.length);
          outStream.flush();
          outStream.close();
       writeJson(response, new String(bytes));    
      } catch (Exception e) {
        e.printStackTrace();
      } finally {
        try {
          if( channel != null){
            channel.close();
          }
          if (random != null) {