zoukankan      html  css  js  c++  java
  • 基础 jsp + Servlet 进行文件下载

              直接给你能用的代码 

          

    <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
    <html>
    <head>
        <title>文件下载基础</title>
    </head>
    <body>
    <form method="post" action="/RTServler">
        下载测试<input type="text" name="name">
        <input type="submit" value="开始下载">
    
    </form>
    </body>
    </html>

          

         String path = getServletContext().getRealPath("/img/"+name);   本地路径,我就不说了   
    package cn.study.servlet;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.URLEncoder;
    
    /**
     * Created by ***** on 2018/4/3.
     */
    public class RTServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
    
            response.setCharacterEncoding("UTF-8");
            String name = request.getParameter("name");//获取要下载的文件名
            System.out.println(name);
            //第一步:设置响应类型
           // response.setContentType("application/force-download");//应用程序强制下载
            //第二读取文件
            String path = getServletContext().getRealPath("/img/"+name);
            System.out.println(path);
            System.out.println("STOP");
            InputStream in = new FileInputStream(path);
            //设置响应头,对文件进行url编码
            name = URLEncoder.encode(name, "UTF-8");
            response.setHeader("Content-Disposition", "attachment;filename="+name);
            response.setContentLength(in.available());
    
            //第三步:老套路,开始copy
            OutputStream out = response.getOutputStream();
            byte[] b = new byte[1024];
            int len = 0;
            while((len = in.read(b))!=-1){
                out.write(b, 0, len);
            }
            out.flush();
            out.close();
            in.close();
    
    
    
    
    
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
             doPost(request,response);
        }
    }
  • 相关阅读:
    java数据类型转换
    复习Java基础
    最完整的台达PLC培训教程(沈阳工大)学习笔记1
    6.3.4 方法引用
    6.3.3函数式接口
    6.3 lambda 表达式
    java 核心技术卷一笔记 6 .2.3 接口 lambda 表达式 内部类
    java 核心技术卷一笔记 6 .2接口 lambda 表达式 内部类
    java 核心技术卷一笔记 6 .1.接口 lambda 表达式 内部类
    软件开发需求风险分析
  • 原文地址:https://www.cnblogs.com/LWLDD/p/8711471.html
Copyright © 2011-2022 走看看