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

     1 

      //DownloadServlet.java
    package com.demo; 2 3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.FileReader; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.io.OutputStream; 9 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 DownloadServlet extends HttpServlet { 16 @Override 17 protected void doGet(HttpServletRequest req, HttpServletResponse resp) 18 throws ServletException, IOException { 19 // 获取项浏览器输出的对象 20 OutputStream out = resp.getOutputStream(); 21 InputStream in = null; 22 //1- 获得浏览器请求下载的文件名称 23 String fname = req.getParameter("fileName"); 24 //2- 判断文件名是否为空 25 if (fname == null) { 26 //如果为空,则提醒用户输入文件名称 27 out.write("<center><font size='36' color='red'>please input fileName = </font></center>".getBytes()); 28 return; 29 } 30 //3- 文件名不为空,则判断该文件名是否在指定目录中 31 String absPath = this.getServletContext().getRealPath("/WEB-INF/store"); 32 33 File store = new File(absPath); 34 //3-1 得到文件夹中所有文件对象 35 File [] fs = store.listFiles(); 36 //遍历store文件夹中的所有文件夹 37 for (File f : fs) { 38 //判断没个File对象,且文件名称和请求的名称相同 39 if (!(f.isFile() && f.getName().equals(fname))) { 40 //如果不符合,则告诉浏览器,文件没有找到 41 out.write("<center><font size='36' color='red'> file not exist, please revisit </font></center>".getBytes()); 42 out.close(); 43 return; 44 } 45 //4- 满足条件,则获得输入流对象,读取文件 46 47 in = this.getServletContext().getResourceAsStream("/WEB-INF/store/" + fname); 48 //5- 设置正文的MIME类型 49 int length = in.available();//获取正文长度 50 resp.setContentType("application/force-download"); 51 //设置响应正文的长度 52 resp.setHeader("Content-Length",length +""); 53 //Content-Disposition:表示为下载的文件提供一个默认的文件名. 54 resp.setHeader("Content-Disposition", "attachment;fileName=" + fname); 55 //6- 读取并发送文件给浏览器 56 byte[] buffer = new byte[length]; 57 in.read(buffer);//读取 58 59 out.write(buffer);//发送 60 out.close(); 61 in.close(); 62 } 63 64 } 65 }
    1 
      //web.xml中的配置
    <servlet-name>download</servlet-name> 2 <servlet-class>com.demo.DownloadServlet</servlet-class> 3 </servlet> 4 <servlet-mapping> 5 <servlet-name>download</servlet-name> 6 <url-pattern>/download</url-pattern> 7 </servlet-mapping>
  • 相关阅读:
    ios swift模仿qq登陆界面,xml布局
    类和结构体的区别
    获取或者设置时,无后缀和A后缀和W后缀的区别
    mfc控件学习
    MFC之简单计算器
    双冒号、点操作、箭头的区别
    MFC使用MsComm做串口通信
    保存结构体到本地(二进制)
    文件管理函数
    文件定位的几个函数
  • 原文地址:https://www.cnblogs.com/zqq3436/p/5334254.html
Copyright © 2011-2022 走看看