zoukankan      html  css  js  c++  java
  • 文件的下载(静态下载和动态下载)

    建立一个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="xyz.txt">download xyz.txt</a>
        
        <br><br>
        
        <a href="test.jsp">download test.jsp</a>
        
        <br><br>
        <!-- 动态下载 -->
        <a href="filedownloadServlet">Download To File</a>
        
        
    </body>
    </html>
  • 相关阅读:
    【C++】几个简单课本例题
    【汇编】AX内容依次倒排序
    【汇编】课本第三章例题
    【汇编】补码的理解+标志寄存器的相关探索
    【记录】台式机的组装
    【记录】.bin文件 到 .vdi文件的转换教程
    【汇编】1.汇编环境的搭建:DOSBox的安装
    docker的常用命令,以及postgressql的启动
    Docker中容器的备份、恢复和迁移
    C# 常见面试问题汇总
  • 原文地址:https://www.cnblogs.com/lxnlxn/p/5841761.html
Copyright © 2011-2022 走看看