zoukankan      html  css  js  c++  java
  • Servlet读取资源文件(文件的下载)

    1. 文件名非中文:

     1 package ztq.servlet.study;
     2 
     3 import java.io.FileInputStream;
     4 import java.io.IOException;
     5 import java.io.InputStream;
     6 import java.io.OutputStream;
     7 
     8 import javax.servlet.ServletContext;
     9 import javax.servlet.ServletException;
    10 import javax.servlet.http.HttpServlet;
    11 import javax.servlet.http.HttpServletRequest;
    12 import javax.servlet.http.HttpServletResponse;
    13 
    14 public class ServletDemo1 extends HttpServlet {
    15     public void doGet(HttpServletRequest request, HttpServletResponse response)
    16             throws ServletException, IOException {
    17         //获取要下载的文件
    18         ServletContext sc = getServletContext();
    19         String path = sc.getRealPath("/pic.jpg");
    20         
    21         //通知客户端以下载的方式打开
    22         response.setHeader("Content-Disposition", "attachment;filename = pic.jpg" );
    23         response.setHeader("Content-type", "application/octet-stream");
    24         
    25         //构建输入输出流
    26         InputStream in = new FileInputStream(path);
    27         OutputStream out = response.getOutputStream();
    28         byte[] buf = new byte[1024];
    29         int len = 0;
    30         while((len = in.read(buf)) != -1){
    31             out.write(buf, 0, len);
    32         }
    33         in.close();
    34         out.close();
    35     }
    36     public void doPost(HttpServletRequest request, HttpServletResponse response)
    37             throws ServletException, IOException {
    38         doGet(request, response);
    39     }
    40 }

    2. 文件名含中文:

     1 package ztq.servlet.study;
     2 
     3 import java.io.FileInputStream;
     4 import java.io.IOException;
     5 import java.io.InputStream;
     6 import java.io.OutputStream;
     7 import java.net.URLEncoder;
     8 
     9 import javax.servlet.ServletContext;
    10 import javax.servlet.ServletException;
    11 import javax.servlet.http.HttpServlet;
    12 import javax.servlet.http.HttpServletRequest;
    13 import javax.servlet.http.HttpServletResponse;
    14 
    15 public class ServletDemo1 extends HttpServlet {
    16     public void doGet(HttpServletRequest request, HttpServletResponse response)
    17             throws ServletException, IOException {
    18         //获取要下载的文件
    19         ServletContext sc = getServletContext();
    20         String path = sc.getRealPath("/人物.jpg");
    21         
    22         //截取文件名
    23         String filename = path.substring(path.lastIndexOf("\") + 1);
    24         
    25         //通知客户端以下载的方式打开
    26         response.setHeader("Content-Disposition", "attachment;filename = " + URLEncoder.encode(filename, "UTF-8"));
    27         response.setHeader("Content-type", "application/octet-stream");
    28         
    29         //构建输入输出流
    30         InputStream in = new FileInputStream(path);
    31         OutputStream out = response.getOutputStream();
    32         byte[] buf = new byte[1024];
    33         int len = 0;
    34         while((len = in.read(buf)) != -1){
    35             out.write(buf, 0, len);
    36         }
    37         in.close();
    38         out.close();
    39     }
    40     public void doPost(HttpServletRequest request, HttpServletResponse response)
    41             throws ServletException, IOException {
    42         doGet(request, response);
    43     }
    44 }
  • 相关阅读:
    实时信号阻塞队列大小测试
    实时信号和非实时信号
    [Linux]关于sigprocmask函数的讨论
    java中Map集合的常用方法 (转)
    佛跳墙
    百万数据查询效率提高方法(转)
    bootstrap table 前后端分页(超级简单)
    bootstrap table 分页序号递增问题 (转)
    Spring boot+mybatis+thymeleaf 实现登录注册,增删改查
    js弹出对话框的三种方式(转)
  • 原文地址:https://www.cnblogs.com/zhangtianq/p/5905397.html
Copyright © 2011-2022 走看看