下载文件的几种方法:

 private void writeFileBuffer(String fileName, HttpServletRequest request, HttpServletResponse response, String contentType, String exportName) {if (fileName == null) {return;}File file = new File(fileName);// ISO-8859-1 ==> UTF-8 进行编码转换extractPathFromPattern(request);// 其余处理略if (file.exists()) {try (InputStream inputStream = new BufferedInputStream(new FileInputStream(file));OutputStream outputStream = response.getOutputStream();) {// 设置强制下载不打开  response.setContentType(contentType);String name = StringUtils.isEmpty(exportName) ? file.getName() : exportName;response.addHeader("Content-Disposition", "attachment;fileName=" + new String(name.getBytes("UTF-8"), "iso-8859-1"));byte[] buf = new byte[1024];int len;while ((len = inputStream.read(buf)) > 0) {outputStream.write(buf, 0, len);}response.flushBuffer();} catch (Exception e) {log.info("文件下载失败" + e.getMessage());}} else {log.info("文件下载失败-文件不存在,filename:" + exportPath + File.separator + fileName);}}public void writeFileBuffer2(String fileName, HttpServletRequest request, HttpServletResponse response, String contentType, String exportName) {try {// path是指欲下载的文件的路径。File file = new File(fileName);// 取得文件名。String filename = file.getName();// 以流的形式下载文件。InputStream fis = new BufferedInputStream(new FileInputStream(fileName));byte[] buffer = new byte[fis.available()];fis.read(buffer);fis.close();// 清空responseresponse.reset();// 设置response的Headerresponse.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));response.addHeader("Content-Length", "" + file.length());OutputStream toClient = new BufferedOutputStream(response.getOutputStream());response.setContentType("application/octet-stream");toClient.write(buffer);toClient.flush();toClient.close();} catch (IOException ex) {ex.printStackTrace();}}public void writeFileBuffer3(String fileName, HttpServletRequest request, HttpServletResponse response) {try {FileInputStream fileInputStream = new FileInputStream(fileName);//字节流//设置文件下载方式
//            response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes()));;//获取servlet响应输出字节流//        PrintWriter writer = response.getWriter();//字符流ServletOutputStream outputStream = response.getOutputStream(); //字节流//流数据交换,每次交换10k数据大小 (1024k = 1m)byte[] bytes = new byte[1024 * 1000];int read;do {read = fileInputStream.read(bytes);outputStream.write(bytes, 0, read);} while (-1 != read);//关闭资源IOUtils.closeQuietly(fileInputStream);IOUtils.closeQuietly(outputStream);} catch (Exception e) {System.out.println(e.getStackTrace());}}public HttpServletResponse download(String path, HttpServletResponse response) {try {// response.reset();// path是指欲下载的文件的路径。File file = new File(path);// 取得文件名。String filename = file.getName();// 取得文件的后缀名。String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase();// 以流的形式下载文件。InputStream fis = new BufferedInputStream(new FileInputStream(path));byte[] buffer = new byte[fis.available()];fis.read(buffer);fis.close();// 清空response// 设置response的Headerresponse.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));response.addHeader("Content-Length", "" + file.length());OutputStream toClient = new BufferedOutputStream(response.getOutputStream());response.setContentType("application/octet-stream");toClient.write(buffer);toClient.flush();toClient.close();} catch (IOException e) {String simplename = e.getClass().getSimpleName();if("ClientAbortException".equals(simplename)){System.out.println("客户端刷新太快了");}elsee.printStackTrace();}return response;}public void down1(String path,HttpServletResponse response) throws Exception {//        response.reset();response.setContentType("application/octet-stream;charset=utf-8");response.setHeader("Content-disposition","attachment; filename=test.png");try(BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File(path)));// 输出流BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());){byte[] buff = new byte[1024];int len = 0;while ((len = bis.read(buff)) > 0) {bos.write(buff, 0, len);}}}

下载文件的几种方法:相关推荐

  1. 用python下载文件的若干种方法汇总

    压缩文件可以直接放到下载器里面下载的 you-get 连接 下载任意文件 重点 用python下载文件的若干种方法汇总 写文章 用python下载文件的若干种方法汇总 zhangqibot发表于Met ...

  2. python下载方法-python实现下载文件的三种方法_python

    本篇文章主要介绍了python实现下载文件的三种方法,最常用的方法就是通过Http利用urllib或者urllib2模块还有requests,有兴趣的可以了解一下. Python开发中时长遇到要下载文 ...

  3. python下载的文件放在哪里的-python实现下载文件的三种方法

    Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib从ftp站点下载文件.此外Python还提供了另外一种方法 ...

  4. python 下载文件-用python下载文件的若干种方法汇总

    在日常科研或者工作中,我们免不了要批量从网上下载一些资料.要是手工一个个去下载,浪费时间又让鼠标折寿,好不容易点完了发现手指都麻木了. 这种重复性的批量作业我们应该交给python小弟去帮我们搞定,这 ...

  5. python 下载文件-python实现下载文件的三种方法_python

    本篇文章主要介绍了python实现下载文件的三种方法,最常用的方法就是通过Http利用urllib或者urllib2模块还有requests,有兴趣的可以了解一下. Python开发中时长遇到要下载文 ...

  6. python如何实现下载文件_python实现下载文件的三种方法

    python实现下载文件的三种方法 Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib从ftp站点下载文件. ...

  7. Powershell下载文件的三种方法

    Powershell下载文件的三种方法 Invork-WebRequest WebClient对象 BitsTransfer模块 layout: post title: Powershell下载文件的 ...

  8. 从Linux终端下载文件的2种方法

    如果您坚持使用Linux终端,例如在服务器上,如何从终端下载文件? Linux中没有下载命令,但是有几个用于下载文件的Linux命令. 在这个终端技巧中,您将学习在Linux中使用命令行下载文件的两种 ...

  9. python 网站文件下载-python实现下载文件的三种方法

    Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib从ftp站点下载文件.此外Python还提供了另外一种方法 ...

最新文章

  1. openstack newton noVNC bug 解决方法
  2. 认证服务器的搭建_SpringCloud搭建的认证中心和资源服务器的微服务项目源码分享...
  3. 【渝粤教育】电大中专学前儿童健康教育 (4)作业 题库
  4. 大数据数据科学家常用面试题_进行数据科学工作面试
  5. 怎样用php写入数据库表,PHP如何将数据写入到MYSQL数据库
  6. 高中关于人工智能方面的课题_如何看待计算机专业开始设置人工智能课程
  7. Mysql 5.7安装部署和基本命令
  8. 31.QT中串口操作
  9. Linux 下的 sleep
  10. python常见面试题(三)
  11. coco2d-js 多屏适配相关API
  12. 数据治理管理平台有哪些特点
  13. PAT (Basic Level) Practice 1006 换个格式输出整数
  14. axios的简单封装处理
  15. 大数据可视化:Echarts
  16. 从零开始学统计 03 | 均值,方差,标准差
  17. MySQL基础 - 连接查询
  18. 如何查看linux的系统配置,多少个核心,多少个线程?CPU的主频 查看内存
  19. 诠释绿色科技 Laedana荣获2022国际CMF设计奖
  20. win10系统编辑服务器在哪里设置密码,技术编辑处置win10系统忘记登录密码的设置技巧...

热门文章

  1. CVPR 2021 | Transformer进军low-level视觉!北大华为等提出预训练模型IPT
  2. 0比20,字节跳动在与腾讯的这场掐架中输的太惨...
  3. Vavr User Guide中英对照版
  4. USBCAN:CANABLE实现PCA
  5. easypoi 操作 excel 表格,这也太 easy 了吧
  6. [阿里天池]广告投放分析
  7. python-pyperclip模块
  8. python 字符串转数组
  9. 耶耶 落实好了实习工作
  10. buffalo NAS 备份