zoukankan      html  css  js  c++  java
  • 文件下载

    最重要的两点是设置响应头

    1、设置contextType 响应头:通知客户端这是个下载文件

      response.setContentType("application/x-msdownload");

    2、设置content=Disposition 响应头:通知浏览器不再由自己自行处理要下载的文件,而是由客户自己下载

      response.setHeader("content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8"));

    jsp页面

    <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">  
        <title>My JSP 'index.jsp' starting page</title>
      </head>
      
      <body>
          <a href="downLoadServlet">Study download</a>
      </body>
    </html>

    servlet

    package com.future.demo;
    
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.net.URLEncoder;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class DownLoadServlet extends HttpServlet {
    
        
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            //设置contextType 响应头:通知客户端这是个下载文件
            response.setContentType("application/x-msdownload");
            
            //获取要下载的文件名字
            String fileName = "文件下载.txt";
            
            //设置content=Disposition 响应头:通知浏览器不再由自己自行处理要下载的文件,而是由客户自己下载
            response.setHeader("content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8"));
            
            OutputStream os = response.getOutputStream();//不需要主动关流,是要用户自动处理的
            
            //要下载的文件
            InputStream is = new FileInputStream("C:\Users\Administrator\Desktop\ms.txt");
            int len = 0;
            byte[] buffer = new byte[1024];
            while((len=is.read(buffer))!=-1){
                os.write(buffer, 0, len);
            }
            is.close();
            //os.close();
        }
    
        
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
                doGet(request, response);
        }
    }
  • 相关阅读:
    Spring IOC(二)
    Spring组件注册
    第六章:随机数和expect
    第二十一节:异常处理
    第二十节:基础知识阶段复习
    LVM逻辑卷管理
    第十九节:类的装饰器和数据描述符的应用
    第十八节:上下文管理协议
    第十七节:数据描述符
    第十六节:内置函数补充
  • 原文地址:https://www.cnblogs.com/ms-grf/p/7296354.html
Copyright © 2011-2022 走看看