全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

JavaWeb响应下载功能实例代码(包含工具类)

今天通过本文给大家分享是关于javaweb的响应(response)下载

以下是我的Demo:

页面我就粘主要部分的代码

<a href = "${pageContext.request.contextPath }/user/courseTab">模板下载</a>

当然,现在的项目大家都使用框架,这里我使用的是(SSM),好了,粘代码

@Controller
@RequestMapping("/user")
public class UploadController {
@RequestMapping(value="/courseTab",method=RequestMethod.GET)
  public void courseTab(HttpServletResponse response,HttpServletRequest request) throws IOException{
    String path = request.getSession().getServletContext().getRealPath("/courseTab/课表上传模板.xls");
    DownUtil.downMb(response, path, "课表模板"+DateFormat.formatSimple(new Date()));
}
}

 这里我使用的DownUtil工具类是我自己写的,下来我粘到文章中

package org.cxxy.base.cxsc.util;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import javax.servlet.http.HttpServletResponse;
/**
 * @Title: DownUtil.java
 * @Package org.cxxy.base.cxsc.util
 * @Description:文件下载工具类
 * @author ChoviWu
 * @date 2017年6月18日 下午2:44:17
 * @version V1.0
 */
public class DownUtil {
  /**
   *
   * @Description:
   * @param @param response
   * @param @param url 文件在数据库的路径
   * @param @param base 文件存放的基础路径
   * @param @param folderPath 上传所在的文件夹
   * @param @return
   * @param @throws IOException
   * @return int
   * @throws
   */
  @SuppressWarnings("unused")
  public static int downFile(HttpServletResponse response, String url,
      Integer down, String base, String folderPath) throws IOException {
    // 文件的名称
    String fileName = url.split("/")[1];
    System.out.println(fileName);
    // 文件的后缀
    String last = url.substring(url.lastIndexOf(".") + 1);
    System.out.println(last);
    // 文件路径
    String downFilePath = base + folderPath + fileName;
    Long fileLength = new File(downFilePath).length();// 文件的长度
    if (fileLength != 0) {
      response.reset();
      response.setContentType("application/octet-stream;charset=utf-8"); // 改成输出excel文件
      try {
        response.setHeader(
            "Content-disposition",
            "attachment; filename="
                + new String(fileName.getBytes("utf-8"),
                    "ISO8859-1"));
        response.setHeader("Content-Length", String.valueOf(fileLength));
      } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
      }
      BufferedInputStream bis = null;
      BufferedOutputStream bos = null;
      FileInputStream fis = null;
      try {
        fis = new FileInputStream(downFilePath);
        bis = new BufferedInputStream(fis);
        // 输出流
        bos = new BufferedOutputStream(response.getOutputStream());
        byte[] buff = new byte[2048];
        int bytesread;
        // 写文件
        while (-1 != (bytesread = bis.read(buff, 0, buff.length))) {
          bos.write(buff, 0, bytesread);
        }
        // 跳转的路径
        fis.close();
        bis.close();
        bos.close();
      } catch (FileNotFoundException e) {
        System.out.println("File is Not Exsist!");
      }
    } else {
      // 抛异常
      response.getWriter()
          .write("<script charset='utf-8' type='text/javascript'>alert('该资源不存在!');history.go(-1);</script>");
      return down;
    }
    down++;
    return down;
  }
  /**
   *
   * @Description: 下载的模板
   * @param @param response
   * @param @param path 路径名
   * @param @param name 模板名称
   * @param @throws IOException
   * @return void
   * @throws
   */
  @SuppressWarnings("unused")
  public static void downMb(HttpServletResponse response, String path,
      String name) throws IOException {
    Long fileLength = new File(path).length();// 文件的长度
    System.out.println("文件的长度:" + fileLength);
    if (fileLength != 0) {
      response.reset();
      response.setContentType("application/octet-stream;charset=utf-8"); // 改成输出excel文件
      try {
        response.setHeader(
            "Content-disposition",
            "attachment; filename="
                + new String(name.getBytes("utf-8"),
                    "ISO8859-1"));
        response.setHeader("Content-Length", String.valueOf(fileLength));
      } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
      }
      BufferedInputStream bis = null;
      BufferedOutputStream bos = null;
      FileInputStream fis = null;
      try {
        fis = new FileInputStream(path);
        bis = new BufferedInputStream(fis);
        // 输出流
        bos = new BufferedOutputStream(response.getOutputStream());
        byte[] buff = new byte[2048];
        int bytesread;
        // 写文件
        while (-1 != (bytesread = bis.read(buff, 0, buff.length))) {
          bos.write(buff, 0, bytesread);
        }
        fis.close();
        bis.close();
        bos.close();
      } catch (FileNotFoundException e) {
        System.out.println("File is Not Exsist!");
      }
    }
  }
}

 下来,我说一下,调用的downMb,我们都知道,在服务器上下载一个文件,

//设置响应头,控制浏览器下载该文件,形参调的是文件的长度
response.setHeader("Content-Length", String.valueOf(fileLength));
 //设置响应类型,设置输出流类型
response.setContentType("application/octet-stream;charset=utf-8"); // 改成输出excel文件

 这里我使用的是输出的Excel文件

接下来就是读文件,写文件了,相信学了java基础的都会接触IO吧,这里我就略过

BufferedInputStream bis = null;
BufferedOutputStream bos = null;

这里使用的是缓冲流,因其使用的是浏览器打开文件的下载

下来就是写文件了,写文件也是一贯的套路,先把文件存到buff数据缓冲区,然后将buff的数据输出到浏览器供用户查看

byte[] buff = new byte[2048];
  int bytesread;
  // 写文件
  while (-1 != (bytesread = bis.read(buff, 0, buff.length))) {
    bos.write(buff, 0, bytesread);
  }

当读写完文件之后,千万别忘了要关闭文件流(当然,关闭流的顺序也不能变)

fis.close();
bis.close();
bos.close();

以上所述是小编给大家介绍的JavaWeb响应下载实例代码(包含工具类),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# javaweb  # 响应下载  # 工具类  # java中添加按钮并添加响应事件的方法(推荐)  # java搭建一个Socket服务器响应多用户访问  # javaweb如何实现请求和响应  # Java中HttpServletResponse响应中文出现乱码问题  # Java Web请求与响应实例详解  # java常见事件响应方法实例汇总  # javasciprt下jquery函数$.post执行无响应的解决方法  # JAVA发送HTTP请求  # 返回HTTP响应内容  # 应用及实例代码  # JavaWeb Refresh响应头代码实例详解  # 的是  # 我就  # 给大家  # 小编  # 上传  # 好了  # 我说  # 大家都  # 在此  # 不存在  # 跳转  # 别忘了  # 先把  # 因其  # 学了  # 所述  # 该文件  # 给我留言  # 感谢大家  # 疑问请 


相关文章: 用v-html解决Vue.js渲染中html标签不被解析的问题  高性能网站服务器部署指南:稳定运行与安全配置优化方案  建站之星微信建站一键生成小程序+多端营销系统  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  如何通过商城免费建站系统源码自定义网站主题?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  如何通过VPS建站无需域名直接访问?  制作网页的网站有哪些,电脑上怎么做网页?  如何用好域名打造高点击率的自主建站?  如何快速搭建二级域名独立网站?  如何在IIS7上新建站点并设置安全权限?  Swift中循环语句中的转移语句 break 和 continue  javascript中的try catch异常捕获机制用法分析  如何快速登录WAP自助建站平台?  如何选购建站域名与空间?自助平台全解析  网站制作软件有哪些,制图软件有哪些?  nginx修改上传文件大小限制的方法  定制建站价位费用解析与套餐推荐全攻略  建站之星如何配置系统实现高效建站?  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  常州自助建站费用包含哪些项目?  实现虚拟支付需哪些建站技术支撑?  如何通过宝塔面板实现本地网站访问?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  智能起名网站制作软件有哪些,制作logo的软件?  如何制作网站标识牌,动态网站如何制作(教程)?  如何在IIS服务器上快速部署高效网站?  建站之星会员如何解锁更多建站功能?  建站为何优先选择香港服务器?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  建站之星如何实现PC+手机+微信网站五合一建站?  如何配置IIS站点权限与局域网访问?  宝塔面板创建网站无法访问?如何快速排查修复?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  如何通过免费商城建站系统源码自定义网站主题与功能?  小程序网站制作需要准备什么资料,如何制作小程序?  建站之星展会模板:智能建站与自助搭建高效解决方案  建站之星如何实现五合一智能建站与营销推广?  如何在香港服务器上快速搭建免备案网站?  宝塔新建站点报错如何解决?  如何在宝塔面板中创建新站点?  黑客入侵网站服务器的常见手法有哪些?  如何在Windows环境下新建FTP站点并设置权限?  定制建站流程步骤详解:一站式方案设计与开发指南  独立制作一个网站多少钱,建立网站需要花多少钱?  C#如何在一个XML文件中查找并替换文本内容  Python lxml的etree和ElementTree有什么区别 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。