java web下载文件设置
在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下载文件设置相关推荐
- java web 下载文件带宽限制_java-下载时限制带宽
我有一个可以使用互联网连接下载数据的应用程序.我正在使用HttpURLConnection来做到这一点. 问题:我的应用程序消耗了Internet带宽,因此用户将在其浏览器上缓慢浏览.我想让他们选择自 ...
- Windows从web下载文件的几种方式
最近搞app自动化测试,需要自动从网页上下载apk用于测试,顺便学习了几种从web下载文件的方式. 一.PowerShell DownloadFile 命令 PowerShell 是一种winodws ...
- java线程下载文件_Java多线程下载文件实例详解
本文实例为大家分享了Java多线程下载文件的具体代码,供大家参考,具体内容如下 import java.io.File; import java.io.InputStream; import java ...
- Java多线程下载文件
Java多线程下载文件 优化:合理利用服务器资源,将资源利用最大化,加快下载速度 一般有两种方式: 线程池里面有N个线程,多线程下载单个文件,将网络路径的文件流切割成多快,每个线程下载一小部分,然后写 ...
- python用 requests 模块从 Web 下载文件
requests 模块让你很容易从 Web 下载文件,不必担心一些复杂的问题,诸如网络错误.连接问题和数据压缩.requests 模块不是 Python 自带的,所以必须先安装.通过命令行,运行 pi ...
- 阿里开源(EasyExcel):使用Java将数据导出为Excel表格、带样式----》java web下载 Excel文件
目录 一.技术选型 二.实现过程 1.导入依赖 2.编写工具类 EasyExcelUtil 3.公用参数类 EasyExcelParams 4.表格样式实体类 MyWriteHandler 5.数据实 ...
- Java Web 实现文件多线程分片下载方案
背景需求 最近发现系统中有不少功能的下载文件涉及到较大文件 当超过1G的文件下载时,直接通过浏览器下载,可能出现下载失败现象 下载失败表现为下载文件损坏,或重复重试下载 大文件的下载会因为网络波动.会 ...
- Java Web之文件的上传及下载
一.文件的上传 1. 简介 > 将一个客户端的本地的文件发送到服务器中保存. > 上传文件是通过流的形式将文件发送给服务器. 2.表单的设置 1.向服务器上传一个文件时,表单要使用post ...
- java web下载zip文件_Java Web之下载文件
下载的文件,不能随便的被访问,放在外面的文件夹肯定不行,url一敲就能访问了,所以我们要放在WEB-INF文件夹里面,WEB-INF文件夹只有Servlet才能访问,我们新建一个文件夹,叫downlo ...
最新文章
- 买不起手办就用AI渲染一个!用网上随便搜的图就能合成,已有网友开炒游戏NFT...
- centos7 安装mysql php,Centos7安装mysql与php的方法
- thinkphp5基本的一些操作/API友好/获取请求信息(Request)/判断请求类型(GET...)/验证参数数据(Validate)/连接数据库/原生sql语句查询
- ubuntu系统操作常见错误
- spring核心之AOP学习总结二
- mysql 中文字符排序规则_mysql中字符集和排序规则说明
- 结合Composer 新版本PHP的开发方式
- 【华为云实战开发】6.Cocos游戏项目如何在云端开发
- 支付宝区块链授权专利212件 位居全球第一!
- 20190804:有效的括号(误删补发)
- 模式识别和机器学习重点算法总结篇
- erpc(EmbeddedRPC)入门笔记
- 服务端验证防水墙验证码向远程发送请求并验证的方法
- Hard Life UVA - 1389(最大密度子图 输出点集)
- 高并发场景下,库存问题解决方案
- spring boot 本地maven手动添加pom.xml依赖
- 峨眉派的创始人真的是郭襄吗?
- 一个团购安卓APP界面的制作以及细节
- HDFS机架感知功能原理(rack awareness)
- 服务器防御100G是什么意思?够用吗?
热门文章
- java 常用 函数式接口_「java8系列」神奇的函数式接口
- JavaScript作用域的知识点
- Android启动摄像机拍照存储展示
- 揭秘一位总统的个人外交
- 太及时了!13个Spring Boot练手项目,用好了,升职涨薪不用愁
- 冷钱包被盗?“这是黑客被黑的最惨的一次”
- 代码该如何写才能自己写的容易别人看的也不痛苦
- SpringSecurity 学习笔记分享 记录历程开篇
- Java编程思想读书笔记——多态
- android手机做个人网盘,[干货Get!]Android搭建Cloudreve私人云盘 来自 kindyear