文件下载

文件下载

案例:

package cn.cmlx.web.servlet;

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

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.IOUtils;

@WebServlet("/Download1Servlet")
public class Download1Servlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        /*
         * 两个头一个流 1.Content-Type 2.Content-Disposition 3.流:下载文件的数据
         * 
         */
        String filename = "G:/不是爱情.mp3";
        String contentType = this.getServletContext().getMimeType(filename);// 通过文件名称获取MIME类型
        String contentDisposition = "attachment;filename=a.mp3";
        // 一个流
        FileInputStream input = new FileInputStream(filename);
        // 设置头
        response.setHeader("Content-Type", contentType);
        response.setHeader("content-Disposition", contentDisposition);
        // 获取绑定了响应端的流
        ServletOutputStream output = response.getOutputStream();
        IOUtils.copy(input, output);// 把输入流中的数据写入到输出流中。
        input.close();
    }

}
Download1Servlet.java

下载的细节

案例:加防止乱码之后

package cn.cmlx.web.servlet;

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

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.IOUtils;

@WebServlet("/Download1Servlet")
public class Download1Servlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        /*
         * 两个头一个流 1.Content-Type 2.Content-Disposition 3.流:下载文件的数据
         * 
         */
        String filename = "G:/不是爱情.mp3";
        
        //为了使下载框中显示中文名称不出乱码!
        String framename = new String("不是爱情.mp3".getBytes("GBK"),"ISO-8859-1");
        String contentType = this.getServletContext().getMimeType(filename);// 通过文件名称获取MIME类型
        String contentDisposition = "attachment;filename=a.mp3";
        // 一个流
        FileInputStream input = new FileInputStream(filename);
        // 设置头
        response.setHeader("Content-Type", contentType);
        response.setHeader("content-Disposition", contentDisposition);
        // 获取绑定了响应端的流
        ServletOutputStream output = response.getOutputStream();
        IOUtils.copy(input, output);// 把输入流中的数据写入到输出流中。
        input.close();
    }

}
Download1Servlet

 

posted @ 2018-09-04 16:10  cmlx  阅读(103)  评论(0)    收藏  举报