1.文件下载和文件样式设置方面,阿帕奇公司提供了POI,由于时间关系,后期再更,先写写最原始的下载方法。
1.1 通过超链接下载
优点:开发简单,之间通过超链接即可完成。 缺点:非压缩包的文件(.jpg,.png,.gif,.doc,.txt..)则直接在浏览器中打开。 建议:所有的文件都是压缩包时,可以使用该中方式。
其代码如下:
要保证所要下载的文件路径有效
<a href="1.jpg">girl1.jpg</a> <a href="1.zip">girl2.zip</a>
1.2通过IO流的方式下载,这里使用的是jsp文件+servlet的方式下载
以下是jsp的内容
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML> <html> <head> <title>下载</title> </head> <body> <h1>超链接方式下载</h1> <a href="1.jpg">girl1.jpg</a> <a href="1.zip">girl2.zip</a> <br/> <h1>IO方法/文件转发方式下载</h1> <a href="${pageContext.request.contextPath}/servlet/DownLoadServlet?name=girl1.jpg">girl1.jpg</a> <a href="${pageContext.request.contextPath}/servlet/DownLoadServlet?name=girl2.zip">girl2.zip</a> <br/> </body> </html>以下是对应servlet中的代码
package cn.test.web; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import java.util.UUID; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class DownLoadServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //IO流的方式现在 //1、接收参数 String fname = request.getParameter("name"); //2、创建输入流对象 InputStream in = new FileInputStream( getServletContext().getRealPath(fname)); //3、创建输出流对象 OutputStream out = response.getOutputStream(); //4、告设置头通知,告知浏览器以附件下载的方式打开 response.setHeader("Content-Disposition", "attachment;filename="+fname); //5执行io操作 byte[] bts = new byte[1024]; int len = -1; while((len=in.read(bts))!=-1){ out.write(bts,0,len); } //6、关闭流 out.close(); in.close(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }