文件下载

结合网上一些博客修改的 具体哪些太久了,记不清了

package com.cj.core.utils.download;import lombok.extern.slf4j.Slf4j;import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;/*** @author: 刘磊* @Description: 文件下载* @date: 2019/7/5 17:19**/
@Slf4j
public class DownUtil {/*** 下载word*  urls  网址*/public static String downWord(String urls, String fileName, HttpServletResponse resp) throws IOException {//获取文件长度Long nFileLength = getFileSize(urls);System.out.println("文件长度---->" + nFileLength);if (nFileLength == -1) {System.out.println("文件长度未知!");return "文件长度未知!";} else if (nFileLength == -2) {System.out.println("文件不可访问!");return "文件不可访问!";}//设置输出文件地址和名字fileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.toString());
//        fileName = new String(fileName.getBytes(), "UTF-8");log.info("++++++++" + fileName + "++++++++");resp.setCharacterEncoding("UTF-8");//设置响应头application/mswordresp.setHeader("content-Type", "application/msword;charset=UTF-8");resp.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".docx;filename*=UTF-8''" + fileName + ".docx");
//        resp.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".docx;filename*=ISO-8859-1''" + fileName + ".docx");
//        resp.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".docx");resp.setCharacterEncoding("UTF-8");resp.setContentLength(nFileLength.intValue());// 定义输出类型 msword wordresp.setContentType("application/msword");OutputStream out = resp.getOutputStream();URL url = new URL(urls);HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection();httpConnection.setRequestProperty("User-Agent", "NetFox");String sProperty = "bytes=0-";httpConnection.setRequestProperty("RANGE", sProperty);InputStream input = httpConnection.getInputStream();//输出文件int bytes = 0;byte[] bufferOut = new byte[1024];while ((bytes = input.read(bufferOut)) != -1) {out.write(bufferOut, 0, bytes);}out.close();System.out.println("文件下载结束!");return "文件下载结束!";}//获得文件长度public static long getFileSize(String urls) {int nFileLength = -1;try {URL url = new URL(urls);HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection();httpConnection.setRequestProperty("User-Agent", "NetFox");int responseCode = httpConnection.getResponseCode();if (responseCode >= 400) {return -2; //-2 represent access is error}String sHeader;for (int i = 1; ; i++) {sHeader = httpConnection.getHeaderFieldKey(i);if (sHeader != null) {if (sHeader.equals("Content-Length")) {nFileLength = Integer.parseInt(httpConnection.getHeaderField(sHeader));break;}} else {break;}}} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}return nFileLength;}
}

java 简单的word文件下载相关推荐

  1. 用JAVA实现简单的WORD转PDF 亲测有效

    前阵子由于项目业务的需要,领导要求研究一下如何实现将word转换成pdf,经过一番的百度找到了一个比较简单的方法(本人比较懒),只需要导入一个JAR包和十几行代码就能够实现转换,而且转换的效果比预想的 ...

  2. java导出生成word

    最近做的项目,需要将一些信息导出到word中.在网上找了好多解决方案,现在将这几天的总结分享一下. 目前来看,java导出word大致有6种解决方案: 1:Jacob是Java-COM Bridge的 ...

  3. java导出生成word(类似简历导出)

    最近做的项目,需要将一些信息导出到word中.在网上找了好多解决方案,现在将这几天的总结分享一下. 目前来看,java导出word大致有6种解决方案: 1:Jacob是Java-COM Bridge的 ...

  4. java poi 操作word遇到的问题

    java poi 操作word文本,图表,遇到的问题 直接上问题 模板字段匹配问题 图表问题 图表导出 问题:模板找不到对应图表 问题:数据填充后效果不达目标 图表中为零的数值去掉(!!!模板层面解决 ...

  5. java POI对word中的表格动态插入固定数据,以及插入不确定数量的的数据

    java POI对word中的表格动态插入固定数据,以及插入不具体的数据 遇到个项目本来是用Execl导出的,相对简单,客户要求用Word导出,并按照他们给的模板进行导出: 从网上百度了一下,然后自己 ...

  6. 【Java实现导出Word文档功能 XDocReport +FreeMarker】

    Java实现导出Word文档功能(XDocReport +FreeMarker) 前言 在日常的开发工作中,我们时常会遇到导出Word文档报表的需求,比如公司的财务报表.医院的患者统计报表.电商平台的 ...

  7. Java实现根据Word模板填充表格数据(poi方式),以及doc和docx转PDF,最全最详细版本,解决外部引用jar在linux上报ClassNotFound的问题。

    Java实现根据Word模板填充表格数据(poi方式),以及doc和docx转PDF,最全最详细版本,解决外部引用jar在linux上报ClassNotFound的问题. 适用场景: 1.固定格式的W ...

  8. java自动生成word,java动态生成word解决方案

    java动态生成word 我想弄一个java网站上的可以生成word,上网搜索了几天,找到几个可以java令jsp(html)转换成word的有jacob和poi, 还有JS,还有在jsp上添加头文件 ...

  9. Java后台Controller实现文件下载操作

    代码 参数: 1.filePath:文件的绝对路径(d:\download\a.xlsx) 2.fileName(a.xlsx) 3.编码格式(GBK) 4.response.request不介绍了, ...

最新文章

  1. collection_check_boxes的应用
  2. 内插以及在数字上变频中的应用
  3. HDOJ_2010_大二写_水仙花数
  4. 全球及中国一次性造口袋行业发展前景预测及投资价值分析报告2021-2027年版
  5. 电商网站(Django框架)—— 大纲内容与基本功能分析
  6. subtext3php,sublime text3怎么快速查找和替换?快捷键是什么
  7. 第六章 面向对象的程序设计
  8. 常见的系统故障及排除
  9. CrossApp 1.1.6新鲜出炉
  10. 矩阵分解:特征值分解、SVD分解、舒尔分解、谱分解
  11. 小学生信息奥赛学c语言,适合小学生的信息学奥赛(NOIP)课程来袭!
  12. 网络投票的另一面:“刷票”与“防刷” 大PK
  13. 这八个网站,是最有良心的分享,没有之一!
  14. 基础编程题目集-7-32 说反话-加强版 (20分)
  15. 京东码农:淡定认为裁员轮不到我!没想正讨论工作就接到被裁通知
  16. (译)网站加速最佳实践——雅虎35条
  17. 网络电视地址大全- -
  18. 网络营销案例:一次成功的事件营销(QQ群)
  19. Linux固态硬盘 设置写入缓存,固态硬盘性能的背后:浅论写入缓存设置
  20. 网站建设合同案例——知化园公司网站建设合同

热门文章

  1. 《中国当代艺术“价值观” 》 高岭 (一)
  2. 用python查看音频数据量#用python对音频图片截取保留拼接#根据乐谱生成音乐
  3. java zip malformed_java 解压zip java.lang.IllegalArgumentException: MALFORMED 错误
  4. SouthMap平台版省去了安装CAD的诸多麻烦,集成在国产ZWCAD2022平台解决了此瓶颈!!!
  5. Memcache原理性的东西 干货
  6. 锐捷先见先行,运维“乐享”其成
  7. 使用VScode进行C/C++多文件进行编译,调试,运行小结(CMake版)
  8. MyBatis和ORM的区别以及Mybatis和Hibernate的区别
  9. 如何关闭linux防火墙图形界面,如何让linux防火墙打开或者关闭
  10. 敷面膜的时候肌肤出现刺痛感,我过敏了吗?