下面的demo实现从服务器上面下载文件的功能:
package mypack; 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; public class DownloadServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { OutputStream out; InputStream in; String filename=request.getParameter("filename"); if(filename==null){ out=response.getOutputStream(); out.write("Please input filename.".getBytes()); out.close(); return ; } in=getServletContext().getResourceAsStream("/store/"+filename); int length=in.available(); response.setContentType("application/force=download"); response.setHeader("Content-Length", String.valueOf(length)); response.setHeader("Content-Disposition", "attachment;filename=\"" +filename+"\""); out=response.getOutputStream(); int bytesRead=0; byte[] buffer=new byte[512]; while((bytesRead=in.read(buffer))!=-1){ out.write(buffer, 0, bytesRead); } in.close(); out.close(); } }
然后再web.xml中配置:
<servlet> <servlet-name>DownloadServlet</servlet-name> <servlet-class>mypack.DownloadServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>DownloadServlet</servlet-name> <url-pattern>/download</url-pattern> </servlet-mapping>
下载的文件放在服务器helloapp/store下面,如果没有,则自行新建.
在浏览器中输入:
http://localhost:8080/helloapp/download?filename=Update.rar
浏览器则会提示下载.