基于servlet的文件下载

 
package com.future.zfs.util;



import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;



import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;



@SuppressWarnings("serial")

public class FileDownLoadServlet extends HttpServlet{

    

    @Override

    protected void service(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        String path=request.getParameter("filename");

        path=new String(path.getBytes("ISO-8859-1"),"utf-8");

        download(path,request,response);

    }

    

    @SuppressWarnings("deprecation")

    public HttpServletResponse download(String path,HttpServletRequest request, HttpServletResponse response) {

        try {

            // path是指欲下载的文件的路径。

            File file = new File(request.getRealPath("/")+"/"+path);

            // 取得文件名。

            String filename = file.getName();

            // 取得文件的后缀名。

            //String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase();



            // 以流的形式下载文件。

            InputStream fis = new BufferedInputStream(new FileInputStream(file));

            byte[] buffer = new byte[fis.available()];

            fis.read(buffer);

            fis.close();

            // 清空response

            response.reset();

            // 设置response的Header

            response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes("utf-8"),"ISO-8859-1"));

            response.addHeader("Content-Length", "" + file.length());

            OutputStream toClient = new BufferedOutputStream(response.getOutputStream());

            response.setContentType("application/octet-stream");

            toClient.write(buffer);

            toClient.flush();

            toClient.close();

        } catch (IOException ex) {

            ex.printStackTrace();

        }

        return response;

    }

}

 

web.xml
1 <servlet>

2         <servlet-name>fileDownLoadServlet</servlet-name>

3         <servlet-class>com.future.zfs.util.FileDownLoadServlet</servlet-class>

4     </servlet>

5     <servlet-mapping>

6         <servlet-name>fileDownLoadServlet</servlet-name>

7         <url-pattern>/fileDownLoadServlet</url-pattern>

8     </servlet-mapping>

9 </servlet>
1 <a href="fileDownLoadServlet?filename=通讯录.xls">哈哈,测试文件下载</a>

本文转自互联网,有如侵权,请及时与我联系 [email protected]

 

你可能感兴趣的:(servlet)