Servlet (三) 文件下载(只支持英文文件名)

package cn.sasa.serv;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class DownloadServlet1 extends HttpServlet {

    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String fileName = request.getParameter("fileName");
        // 指定MIME类型
        response.setContentType(this.getServletContext().getMimeType(fileName));
        // 告诉客户端不要直接解释,以附件形式打开(下载)
        response.setHeader("Content-Disposition", "attachment;filename=" +fileName);

        String realPath = this.getServletContext().getRealPath("download/" + fileName);
        ServletOutputStream output = response.getOutputStream();
        InputStream input = new FileInputStream(realPath);

        int len = 0;
        byte[] buffer = new byte[1024];

        while ((len = input.read(buffer)) > 0) {
            output.write(buffer, 0, len);
        }

        input.close();
        // output.close();//response获得的output不需要手动关闭
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}
原文地址:https://www.cnblogs.com/SasaL/p/10607436.html