Package com. Future. ZFS. util;
Import java. Io. bufferedinputstream;
Import java. Io. bufferedoutputstream;
Import java. Io. file;
Import java. Io. fileinputstream;
Import java. Io. ioexception;
Import java. Io. inputstream;
Import java. Io. outputstream;
Import javax. servlet. servletexception;
Import javax. servlet. http. httpservlet;
Import javax. servlet. http. httpservletrequest;
Import javax. servlet. http. httpservletresponse;
@ Suppresswarnings ("serial ")
Public class filedownloadservlet extends httpservlet {
@ Override
Protected void Service (httpservletrequest request, httpservletresponse response)
Throws servletexception, ioexception {
String Path = request. getparameter ("FILENAME ");
Path = new string (path. getbytes ("ISO-8859-1"), "UTF-8 ");
Download (path, request, response );
}
@ Suppresswarnings ("deprecation ")
Public httpservletresponse download (string path, httpservletrequest request, httpservletresponse response ){
Try {
// Path indicates the path of the object to be downloaded.
File file = new file (request. getrealpath ("/") + "/" + path );
// Obtain the file name.
String filename = file. getname ();
// Get the suffix of the file.
// String ext = filename. substring (filename. lastindexof (".") + 1). touppercase ();
// Download an object as a stream.
Inputstream FCM = new bufferedinputstream (New fileinputstream (File ));
Byte [] buffer = new byte [FCM. Available ()];
FS. Read (buffer );
FCM. Close ();
// Clear response
Response. Reset ();
// Set the Response Header
Response. addheader ("content-disposition", "attachment; filename =" + new string (filename. getbytes ("UTF-8"), "ISO-8859-1 "));
Response. addheader ("Content-Length", "" + file. Length ());
Outputstream toclient = new bufferedoutputstream (response. getoutputstream ());
Response. setcontenttype ("application/octet-stream ");
Toclient. Write (buffer );
Toclient. Flush ();
Toclient. Close ();
} Catch (ioexception ex ){
Ex. printstacktrace ();
}
Return response;
}
}
Web. xml
<Servlet>
<Servlet-Name> filedownloadservlet </servlet-Name>
<Servlet-class> com. Future. ZFS. util. filedownloadservlet </servlet-class>
</Servlet>
<Servlet-mapping>
<Servlet-Name> filedownloadservlet </servlet-Name>
<URL-pattern>/filedownloadservlet </url-pattern>
</Servlet-mapping> <a href = "filedownloadservlet? Filename= .xls "> Haha, Test File Download </a>