在前台有一个下载链接,比如
- <a href="DownLoadServlet">下载</a> <br/>
使用Servlet实现下载:
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.net.URLEncoder;
- import javax.servlet.ServletException;
- import javax.servlet.ServletOutputStream;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- public class DownLoadServlet extends HttpServlet {
- public DownLoadServlet() {
- super();
- }
- public void destroy() {
- super.destroy(); // Just puts "destroy" string in log
- // Put your code here
- }
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- doPost(request,response);
- }
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- //处理请求
- //读取要下载的文件
- File f = new File("E:/好久不见.mp3");
- if(f.exists()){
- FileInputStream fis = new FileInputStream(f);
- String filename=URLEncoder.encode(f.getName(),"utf-8"); //解决中文文件名下载后乱码的问题
- byte[] b = new byte[fis.available()];
- fis.read(b);
- response.setCharacterEncoding("utf-8");
- response.setHeader("Content-Disposition","attachment; filename="+filename+"");
- //获取响应报文输出流对象
- ServletOutputStream out =response.getOutputStream();
- //输出
- out.write(b);
- out.flush();
- out.close();
- }
- }
- /**
- * Initialization of the servlet. <br>
- *
- * @throws ServletException if an error occurs
- */
- public void init() throws ServletException {
- // Put your code here
- }
- }
上传文件的时候需要两个jar。
用的是commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar组件,可以去apache官网上去下载,然后放到WebRoot/WEB-INF/lib目录下
上传代码
uploadServlet.java
下载
代码
Downloadservlet.java