Example #1
0
 public void doDownload(HttpServletRequest req, HttpServletResponse resp, int hc)
     throws IOException {
   FileTransfer ft = FileTransfer.get(hc);
   if (ft == null) {
     resp.sendError(HttpServletResponse.SC_NOT_FOUND);
     return;
   }
   resp.setContentType(ft.mimeType);
   if (ft.size > 0) resp.setContentLength((int) ft.size);
   /*if (ft.filename != null) {
     resp.setHeader("Content-Disposition", (ft.inline ? "inline" : "attachment") + ";filename=" + ft.filename);
   }*/
   resp.setHeader(
       "Content-Disposition",
       (ft.inline ? "inline" : "attachment")
           + (ft.filename != null ? ";filename=" + ft.filename : ""));
   if (ft.size < 0) resp.setHeader("Transfer-Encoding", "chunked");
   else resp.setHeader("Content-Transfer-Encoding", "binary");
   resp.setHeader("Expires", "0");
   resp.setHeader("Cache-Control", "must-revalidate");
   InputStream in = null;
   OutputStream out = null;
   try {
     in = ft.getInputStream();
     out = resp.getOutputStream();
     boolean te = ft.size < 0;
     byte[] buffer = new byte[4096];
     while (true) {
       int n = in.read(buffer);
       if (n <= 0) break;
       if (te) {
         out.write(Integer.toHexString(n).getBytes());
         out.write(13);
         out.write(10);
       }
       out.write(buffer, 0, n);
       if (te) {
         out.write(13);
         out.write(10);
       }
     }
     if (te) out.write("0\r\n\r\n".getBytes());
     out.flush();
   } catch (Error er) {
     logger.log(Level.SEVERE, er.getLocalizedMessage());
   } finally {
     if (in != null) in.close();
     if (out != null) out.close();
   }
 }