/** * Sends a file to the ServletResponse output stream. Typically * you want the browser to receive a different name than the * name the file has been saved in your local database, since * your local names need to be unique. * * @param req The request * @param resp The response * @param filename The name of the file you want to download. * @param original_filename The name the browser should receive. */ private void doDownload( HttpServletRequest req, HttpServletResponse resp, String filename, String original_filename ) throws IOException { File f = new File(filename); int length = 0; ServletOutputStream op = resp.getOutputStream(); ServletContext context = getServletConfig().getServletContext(); String mimetype = context.getMimeType( filename ); // // Set the response and go! // // resp.setContentType( (mimetype != null) ? mimetype : "application/octet-stream" ); resp.setContentLength( (int)f.length() ); resp.setHeader( "Content-Disposition", "attachment; filename=\"" + original_filename + "\"" ); // // Stream to the requester. // byte[] bbuf = new byte[BUFSIZE]; DataInputStream in = new DataInputStream(new FileInputStream(f)); while ((in != null) && ((length = in.read(bbuf)) != -1)) { op.write(bbuf,0,length); } in.close(); op.flush(); op.close(); }
You need to create an account or log in to post comments to this site.