写一个文件下载的Servlet

6 篇文章 0 订阅
2 篇文章 0 订阅

1、写一个servlet类如下:

package com.sidiw.util.file;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.sidiw.fw.config.SysConfig;

import com.sidiw.util.common.StringUtil;

public class FileDownloadSrv extends HttpServlet {

    private static final long serialVersionUID = 929343201803877803L;

 private static final String CONTENT_TYPE = "text/html; charset=utf-8";

    private String strFileName;

    public void setStrFileName(String strFileName) {
        this.strFileName = strFileName;
    }

    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    public void init() throws ServletException {
        super.init();
    }

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        response.setContentType(CONTENT_TYPE);

        try {

            String strPath = SysConfig.sidiwRealPath;

            strFileName = request.getParameter("strFileName");

            File file = new File(strPath + this.strFileName);

            response.setHeader("Pragma", "No-cache");
            response.setHeader("Cache-Control", "no-cache");
            response.setDateHeader("Expires", 0);

            response.setHeader("Content-disposition", "attachment;filename="
                    + StringUtil.encodeURL(this.strFileName, "utf-8"));

            FileInputStream fileinputstream = new FileInputStream(file);

            Long aa = new Long(file.length());
            int l = aa.intValue();
          
            int k = 0;
            int i = 65000;
            byte abyte0[] = new byte[i];
            while (k < l) {
                int j = fileinputstream.read(abyte0, 0, i);
                k += j;
                response.getOutputStream().write(abyte0, 0, j);
            }

            response.getOutputStream().flush();
            fileinputstream.close();

        } catch (Exception e) {
            System.out.println("download file Error!" + e.toString());
        }

    }
}

2、Tomcat5下的配置文件,如果在4.0之前可以不配置

<servlet>
        <servlet-name>fileDownloadSrv</servlet-name>
        <servlet-class>com.sidiw.util.file.FileDownloadSrv</servlet-class>
    </servlet> 
  
   <servlet-mapping>
        <servlet-name>fileDownloadSrv</servlet-name>
        <url-pattern>/servlet/fileDownload</url-pattern>
    </servlet-mapping>

3、使用如下:

 <a href='../../servlet/fileDownload?strFileName="excelFileName">下载附件</a>&nbsp;&nbsp;
    "excelFileName"<BR>

2、Tomcat5下的配置文件,如果在4.0之前可以不配置

<servlet>
        <servlet-name>fileDownloadSrv</servlet-name>
        <servlet-class>com.sidiw.util.file.FileDownloadSrv</servlet-class>
    </servlet> 
  
   <servlet-mapping>
        <servlet-name>fileDownloadSrv</servlet-name>
        <url-pattern>/servlet/fileDownload</url-pattern>
    </servlet-mapping>

3、使用如下:

 <a href='../../servlet/fileDownload?strFileName="excelFileName">下载附件</a>&nbsp;&nbsp;
    "excelFileName"<BR>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值