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 {
}
}