文件下载

xiaoxiao2021-02-28  74

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

转载请注明原文地址: https://www.6miu.com/read-52307.html

最新回复(0)