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

    servlet:

    public class UpAndDownServlet extends HttpServlet {


    public void doPost(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {

    response.setContentType("text/html");
    String type = request.getParameter("type");

    if("down".equals(type)){
    File file = new File("D:\test\44444.png");
    FileInputStream is = new FileInputStream(file);
    BufferedInputStream bs = new BufferedInputStream(is);
    ServletOutputStream os = response.getOutputStream();
    BufferedOutputStream bos = new BufferedOutputStream(os);
    String date = new SimpleDateFormat("yyyy-HH-dd").format(new Date());
    String fileName = date + ".jpg";
    response.setHeader("Content-Disposition", "attachment; filename="" + fileName + """);
    byte[] len = new byte[1024*2];
    int read = 0;
    while((read=is.read(len)) != -1){
    bos.write(len, 0, read);
    System.out.println("read---"+read);
    }
    bos.flush();
    bos.close();
    is.close();
    }

    }

    }


    怎样实现文件下载
    要实现文件下载,我们仅仅须要设置两个特殊的对应头,它们是什么头?假设文件名称带中文,该怎样解决?
    两个特殊的对应头:
    ----Content-Type:       application/octet-stream
    ----Content-Disposition: attachment;filename=aaa.zip
    比如:
    response.setContentType("image/jpeg");response.setHeader("Content- Disposition","attachment;filename=Bluehills.jpg");

    页面:
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    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>down</title>
      </head>
      <body>
        <form action="servlet/UpAndDownServlet?type=down" method="post">
        <input type="submit" value="下载">
        </form>
      </body>
    </html>


  • 相关阅读:
    关于下下载typora的相关说明
    Vue项目vscode 安装eslint插件的方法(代码自动修复)
    [0].Net开发者社区--您好大的官威啊!
    关于hadoop安装后无法访问web界面查看查看 NameNode 和 Datanode 信息
    C#(winform)记录阻止关闭页面方法
    Android开发:记录Cannot resolve symbol'R'问题解决记录
    C#Winform开发杂项记录
    C#Winform 使用NPOI导入、导出Excel
    C#记录一些用到的比对方法
    C#(Winform开发)Excel导出
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5103533.html
Copyright © 2011-2022 走看看