在ruoyi框架下看到的,非常合理,方便记录使用

前端

需要file-saver

// 通用下载方法
export function download(url, params, filename) {downloadLoadingInstance = Loading.service({ text: "正在下载数据,请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", })return service.post(url, params, {transformRequest: [(params) => { return tansParams(params) }],headers: { 'Content-Type': 'application/x-www-form-urlencoded' },responseType: 'blob'}).then(async (data) => {const isLogin = await blobValidate(data);if (isLogin) {const blob = new Blob([data])saveAs(blob, filename)} else {const resText = await data.text();const rspObj = JSON.parse(resText);const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']Message.error(errMsg);}downloadLoadingInstance.close();}).catch((r) => {console.error(r)Message.error('下载文件出现错误,请联系管理员!')downloadLoadingInstance.close();})
}

/*后端*/@GetMapping("download")public void fileDownload(String filePath,String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request){try{if (!FileUtils.checkAllowDownload(fileName)){throw new Exception(String.format("文件名称({})非法,不允许下载。 ", fileName));}// String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);filePath = DOWNLOAD_PATH + filePath;response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);FileUtils.setAttachmentResponseHeader(response, fileName);FileUtils.writeBytes(filePath, response.getOutputStream());}catch (Exception e){e.printStackTrace();log.error("下载文件失败", e);}}//主要是这个方法很好啊,能解决大部分下载的乱码和头部设置问题。public static void setAttachmentResponseHeader(HttpServletResponse response, String realFileName) throws UnsupportedEncodingException{String percentEncodedFileName = percentEncode(realFileName);StringBuilder contentDispositionValue = new StringBuilder();contentDispositionValue.append("attachment; filename=").append(percentEncodedFileName).append(";").append("filename*=").append("utf-8''").append(percentEncodedFileName);response.addHeader("Access-Control-Allow-Origin", "*");response.addHeader("Access-Control-Expose-Headers", "Content-Disposition,download-filename");response.setHeader("Content-disposition", contentDispositionValue.toString());response.setHeader("download-filename", percentEncodedFileName);}

java web下载文件设置相关推荐

  1. java web 下载文件带宽限制_java-下载时限制带宽

    我有一个可以使用互联网连接下载数据的应用程序.我正在使用HttpURLConnection来做到这一点. 问题:我的应用程序消耗了Internet带宽,因此用户将在其浏览器上缓慢浏览.我想让他们选择自 ...

  2. Windows从web下载文件的几种方式

    最近搞app自动化测试,需要自动从网页上下载apk用于测试,顺便学习了几种从web下载文件的方式. 一.PowerShell DownloadFile 命令 PowerShell 是一种winodws ...

  3. java线程下载文件_Java多线程下载文件实例详解

    本文实例为大家分享了Java多线程下载文件的具体代码,供大家参考,具体内容如下 import java.io.File; import java.io.InputStream; import java ...

  4. Java多线程下载文件

    Java多线程下载文件 优化:合理利用服务器资源,将资源利用最大化,加快下载速度 一般有两种方式: 线程池里面有N个线程,多线程下载单个文件,将网络路径的文件流切割成多快,每个线程下载一小部分,然后写 ...

  5. python用 requests 模块从 Web 下载文件

    requests 模块让你很容易从 Web 下载文件,不必担心一些复杂的问题,诸如网络错误.连接问题和数据压缩.requests 模块不是 Python 自带的,所以必须先安装.通过命令行,运行 pi ...

  6. 阿里开源(EasyExcel):使用Java将数据导出为Excel表格、带样式----》java web下载 Excel文件

    目录 一.技术选型 二.实现过程 1.导入依赖 2.编写工具类 EasyExcelUtil 3.公用参数类 EasyExcelParams 4.表格样式实体类 MyWriteHandler 5.数据实 ...

  7. Java Web 实现文件多线程分片下载方案

    背景需求 最近发现系统中有不少功能的下载文件涉及到较大文件 当超过1G的文件下载时,直接通过浏览器下载,可能出现下载失败现象 下载失败表现为下载文件损坏,或重复重试下载 大文件的下载会因为网络波动.会 ...

  8. Java Web之文件的上传及下载

    一.文件的上传 1. 简介 > 将一个客户端的本地的文件发送到服务器中保存. > 上传文件是通过流的形式将文件发送给服务器. 2.表单的设置 1.向服务器上传一个文件时,表单要使用post ...

  9. java web下载zip文件_Java Web之下载文件

    下载的文件,不能随便的被访问,放在外面的文件夹肯定不行,url一敲就能访问了,所以我们要放在WEB-INF文件夹里面,WEB-INF文件夹只有Servlet才能访问,我们新建一个文件夹,叫downlo ...

最新文章

  1. 买不起手办就用AI渲染一个!用网上随便搜的图就能合成,已有网友开炒游戏NFT...
  2. centos7 安装mysql php,Centos7安装mysql与php的方法
  3. thinkphp5基本的一些操作/API友好/获取请求信息(Request)/判断请求类型(GET...)/验证参数数据(Validate)/连接数据库/原生sql语句查询
  4. ubuntu系统操作常见错误
  5. spring核心之AOP学习总结二
  6. mysql 中文字符排序规则_mysql中字符集和排序规则说明
  7. 结合Composer 新版本PHP的开发方式
  8. 【华为云实战开发】6.Cocos游戏项目如何在云端开发
  9. 支付宝区块链授权专利212件 位居全球第一!
  10. 20190804:有效的括号(误删补发)
  11. 模式识别和机器学习重点算法总结篇
  12. erpc(EmbeddedRPC)入门笔记
  13. 服务端验证防水墙验证码向远程发送请求并验证的方法
  14. Hard Life UVA - 1389(最大密度子图 输出点集)
  15. 高并发场景下,库存问题解决方案
  16. spring boot 本地maven手动添加pom.xml依赖
  17. 峨眉派的创始人真的是郭襄吗?
  18. 一个团购安卓APP界面的制作以及细节
  19. HDFS机架感知功能原理(rack awareness)
  20. 服务器防御100G是什么意思?够用吗?

热门文章

  1. java 常用 函数式接口_「java8系列」神奇的函数式接口
  2. JavaScript作用域的知识点
  3. Android启动摄像机拍照存储展示
  4. 揭秘一位总统的个人外交
  5. 太及时了!13个Spring Boot练手项目,用好了,升职涨薪不用愁
  6. 冷钱包被盗?“这是黑客被黑的最惨的一次”
  7. 代码该如何写才能自己写的容易别人看的也不痛苦
  8. SpringSecurity 学习笔记分享 记录历程开篇
  9. Java编程思想读书笔记——多态
  10. android手机做个人网盘,[干货Get!]Android搭建Cloudreve私人云盘 来自 kindyear