首页 > 代码库 > 文件的下载(静态下载和动态下载)

文件的下载(静态下载和动态下载)

 

建立一个Servlet类:FiledownloadServlet;

package com.lanqiao.javaweb.filedownloadservlet;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.URLClassLoader;import java.net.URLEncoder;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import sun.net.URLCanonicalizer;public class FiledownloadServlet extends HttpServlet {    private static final long serialVersionUID = 1L;    protected void doGet(HttpServletRequest request, HttpServletResponse response)             throws ServletException, IOException {                //response.setContentType("application/x-msdownload"):        //即设置一个响应的类型: application/x-msdownload        //通知客户端浏览器: 这是一个需要下载的文件, 不能再按普通的 html 的方式打开.        response.setContentType("application/x-msdownload");                //response.setHeader("Content-Disposition", "attachment;filename=abc.txt");        //设置用户处理的方式: 响应头: Content-Disposition        //通知客户端浏览器: 不再有浏览器来处理该文件, 而是交由用户自行处理                //.txt为下载文件的类型,必须与后面downloadFileName的类型相同;        String fileName="文件下载.txt";                response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));                //读取进来然后下载;                OutputStream out=response.getOutputStream();        //所读取文件的地址,及类型        String downloadFileName="C:\\hh.txt";                //读取要下载的文件        InputStream in=new FileInputStream(downloadFileName);                byte[] buffer=new byte[1024];        int len=0;        while((len=in.read(buffer))!=-1){            out.write(buffer, 0, len);        }                in.close();    }}

 

web.xml文件:

<servlet>    <description></description>    <display-name>FiledownloadServlet</display-name>    <servlet-name>FiledownloadServlet</servlet-name>    <servlet-class>com.lanqiao.javaweb.filedownloadservlet.FiledownloadServlet</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>FiledownloadServlet</servlet-name>    <url-pattern>/filedownloadServlet</url-pattern>  </servlet-mapping>

 

download.jsp页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>        <!-- 静态下载 -->    <a href="http://www.mamicode.com/xyz.txt">download xyz.txt</a>        <br><br>        <a href="http://www.mamicode.com/test.jsp">download test.jsp</a>        <br><br>    <!-- 动态下载 -->    <a href="http://www.mamicode.com/filedownloadServlet">Download To File</a>        </body></html>

 

文件的下载(静态下载和动态下载)