文件下载

来源:互联网 发布:mac配置sublime text3 编辑:程序博客网 时间:2024/06/18 11:06

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