1. package myjava.cn;
  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.ServletException;
  10. import javax.servlet.annotation.WebServlet;
  11. import javax.servlet.http.HttpServlet;
  12. import javax.servlet.http.HttpServletRequest;
  13. import javax.servlet.http.HttpServletResponse;
  14.  
  15. /**
  16. * Servlet implementation class DownLoadServlet
  17. */
  18. @WebServlet("/DownLoadServlet")
  19. public class DownLoadServlet extends HttpServlet {
  20. private static final long serialVersionUID = 1L;
  21.  
  22. /**
  23. * @see HttpServlet#HttpServlet()
  24. */
  25. public DownLoadServlet() {
  26. super();
  27. // TODO Auto-generated constructor stub
  28. }
  29.  
  30. /**
  31. * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
  32. * response)
  33. */
  34. protected void doGet(HttpServletRequest request, HttpServletResponse response)
  35. throws ServletException, IOException {
  36. String path = this.getServletContext().getRealPath("/download/日本.png");
  37. String fileName = path.substring(path.lastIndexOf('\\')+1);
  38. response.setHeader("Content-Disposition", "attachment;filename=" +URLEncoder.encode(fileName,"utf-8"));
  39.  
  40. InputStream in = null;
  41. OutputStream out = null;
  42. try {
  43. in = new FileInputStream(path);
  44. out = response.getOutputStream();
  45. int len = 0;
  46. byte[] b = new byte[1024];
  47. while ((len = in.read(b)) > 0) {
  48. out.write(b, 0, len);
  49. }
  50. } catch (Exception ex) {
  51. throw ex;
  52. } finally {
  53. if (out != null) {
  54. out.flush();
  55. out.close();
  56. }
  57. if (in != null) {
  58. in.close();
  59. }
  60. }
  61.  
  62. // in.read(b)
  63.  
  64. }
  65.  
  66. /**
  67. * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
  68. * response)
  69. */
  70. protected void doPost(HttpServletRequest request, HttpServletResponse response)
  71. throws ServletException, IOException {
  72. // TODO Auto-generated method stub
  73. doGet(request, response);
  74. }
  75.  
  76. }

  

servlet下载文件的更多相关文章

  1. Servlet 下载文件

    这几天有点懒散,还好没有忘记看书,上周去了国家图书馆翻阅了一些和Java相关的书籍,其实这些书都是自己以前看过或者听过,按理来说,不应该看自己已经看过的书籍,应该找一些最新的书籍去看,但是每次走到书架 ...

  2. Servlet下载文件迅雷不支持问题真相之一

    问题描述 最近在做一个下载文件的Servlet,直接使用浏览器的下载功能,完美支持,结果测试人员使用迅雷下载,就不行了,下载也能成功完成,只是迅雷下载的文件大小是悲催的0KB 真相搜罗 网上有很多帖子 ...

  3. Servlet下载文件和http响应

    下载文件等: 1.得到公共的内容ServletContext sc = this.getServletContext(); 2.在链接名字后面加个? 一个参数?参数1=值 两个参数?参数1=值& ...

  4. Servlet 下载文件及支持中文文件名

    Sevlet 下载pdf文件 支持中文文件名 package html2pdf.controller; import java.io.File; import java.io.FileInputStr ...

  5. web下载文件夹

    1.文件下载有两种方式:一种是超链接,一种是Servlet提供下载. 2.超链接下载时:当文件可以在网页直接打开时,会直接打开文件,而不是下载,当文件打开不了时,会提供下载窗口. 3.超链接下载原理 ...

  6. Servlet实现文件,图片等的下载 含代码

    实现文件的下载源代码如下: package com.fxl.servlet; import java.io.FileInputStream;import java.io.IOException;imp ...

  7. Servlet实现文件的下载

    (1)项目的主文件夹例如以下:(演示出image和servlet的位置所在) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGxnZW4xNTczODc= ...

  8. springmvc和servlet在上传和下载文件(保持文件夹和存储数据库Blob两种方式)

    参与该项目的文件上传和下载.一旦struts2下完成,今天springmvc再来一遍.发现springmvc特别好包,基本上不具备的几行代码即可完成,下面的代码贴: FileUpAndDown.jsp ...

  9. Servlet 上传下载文件

    上传文件 1)在表单中使用表单元素 <input type=“file” />,浏览器在解析表单时,会自动生成一个输入框和一个按钮 2)表单需要上传文件时,需指定表单 enctype 的值 ...

随机推荐

  1. RabbitMQ中声明交换器,队列时的,autoDelete=true自动删除的条件

    在声明交换器和队列时,有一个属性叫autoDelete,表示是否自动删除. 如果autoDelete=true,表示自动删除.此处我们要理解,自动删除的条件是什么? 这里的关键是,自动删除的条件是向后 ...

  2. 简单几步,教你学会PHP,新手必看!

    学习php的方法,学东西,永远不要妄想有速成这一说,告诉你了一个方式,但是缺少努力这一环节,那也是白搭.掌握好的学习方法非常必要,看看这篇如何学习PHP培训的方法,在此提醒一下大家,PHP不像别的科目 ...

  3. 09_java基础——this

    多次调用同一个对象的某个方法: package com.huawei.test.java04; /** * This is Description * * @author 王明飞 * @date 20 ...

  4. Pick the Right Shoes

    shoe-->shoes pointed shoes ballet shoes high heel wedged boots strappy sandals绑带凉鞋 t-straps丁字鞋 co ...

  5. hyperscan应用参数

    >>hs_compile_ext_multi 使用额外的参数编译表达式, 额外的参数包括: MIN_OFFSET 距离开始的最小偏移开始匹配 MAX_OFFSET 距离开始的最大偏移结束匹 ...

  6. 无空格字符串的break-all的性能问题

  7. Egret_简单的封装方法

    ////////////随机颜色***////////////////////////// private getRdmClr(): number { return (Math.floor(Math. ...

  8. C语言-第4次作业得分

    作业链接:https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2523 作业链接:https://edu.cnblogs.com/campus ...

  9. JAVA for(i = 0; i<a.length; i++) 解析

    下列 System.out.printf 语句输出的结果是什么? Char a[]={„a‟,‟b‟,‟c‟,‟d‟,‟e‟}; For(i=0; i<=a.length/2; i++) { c ...

  10. SDL2.0.9源码分析

    1.首先 2.0.9编译so出来跟一直不一样,多了个hidapi  库 2.跟Tocy的对比,SDLmain 执行的路径不一样,一个是/src/main/android/SDL_android_mai ...