基于servlet的文件下载
2017-09-07 15:13
218 查看
首先把服务器中的/download文件夹中可供下载的资源显示在带有下载链接的JSP页面中,后台servlet代码(该servlet带有转发到一个显示可供下载资源的JSP页面的操作)为:
带有下载链接的JSP页面代码为:
点击超链接后,发送请求,开始下载的servlet代码:
import java.io.File; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/download") public class downloadservlet extends HttpServlet { @Override protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { // TODO Auto-generated method stub //reques里也有这个获取到项目名之前的路径方法 但是过时了这样获取 String path=getServletContext().getRealPath("/download");//获取到的结果是:D:\JEEeclipsework\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\checkcode\download //获取文件夹 File file=new File(path); // String []files=file.list(); arg0.setAttribute("filename", files); System.out.println(files.length); arg0.getRequestDispatcher("/download.jsp").forward(arg0, arg1); } }
带有下载链接的JSP页面代码为:
<% for(String filename:(String[])request.getAttribute("filename")){ out.println(filename); %><a href="do?filename=<%=filename%>">下载</a><br/> <% } %>
点击超链接后,发送请求,开始下载的servlet代码:
import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.net.URLEncoder; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class dodownload */ @WebServlet("/do") public class dodownload extends HttpServlet { @Override protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { // TODO Auto-generated method stub //获取要下载的文件名 String filename=arg0.getParameter("filename"); filename=new String(filename.getBytes("ISO8859-1"),"UTF-8");//因为Tomcat是iso8859-1编码 System.out.println(filename); //获取服务器的download路径 String basepath=getServletContext().getRealPath("/download"); //将要下载的文件写入输入流 FileInputStream fis=new FileInputStream(basepath+"/"+filename); //通过response的outputstream向前台用户路径下写入 因为该内置对象是服务器响应客户端 //告诉浏览器以下载的方式打开 arg1.setHeader("content-disposition", "attachment;filename="+URLEncoder.encode(filename,"utf-8")); OutputStream fos=arg1.getOutputStream(); byte[] buffer=new byte[1024]; int len=0; while ((len=fis.read(buffer))!=-1) { fos.write(buffer,0,len); } } }
相关文章推荐
- 基于servlet的文件下载
- 基于servlet的文件下载
- 基于servlet的文件下载
- 基于servlet的文件下载
- java基于servlet编写上传下载功能 类似文件服务器
- 基于servlet的文件下载
- 使用servlet下载文件
- 基于servlet的mvc模式---------读取txt等文件的web应用
- 基于 Nginx XSendfile + SpringMVC 进行文件下载
- 7个基于Linux命令行的文件下载和网站浏览工具
- 通过Servlet实现文件的下载
- 基于Winform、WPF等的客户端文件下载
- servlet设置缓存时间以及文件的下载
- 基于HTTP协议用WinSock实现任意文件下载
- Android-- 基于http的文件下载开源框架file-downloader
- 基于jsp的文件上传和下载
- 使用Servlet实现文件的上传与下载
- 详解基于jsp的文件的上传下载
- servlet+jsp实现的文件上传与下载
- 文件上传和下载-ServletFileUpload