使用a标签,点击自动下载文件(Excel),不做页面跳转
记录下最近项目中遇到的问题
知识点:
编码:防止乱码
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
encodeURI() 函数可把字符串作为 URI 进行编码,字符将被十六进制的转义序列进行替换 decodeURI() 函数可对 encodeURI() 函数编码过的 URI 进行解码
请求方式:
a标签默认请求方式是get请求
最主要的设置响应头,即使没有点击事件做处理
响应由设置正确了,点击a标签后也不会跳转页面
注意:没有设置响应头,点击a会把href中的地址当成页面路径,这是不对的,直接跳转会报404错误,这是找不到对应地址的页面
关键部分:设置响应头
注意到第一个值项是attachment,这是真正的关键,设定了这个值,浏览器就会老老实实地显示另存为对话框
如果这个值设成inline,则无论怎样浏览器都会自动尝试用已知关联的程序打开文件
// 1. 使客户端浏览器,区分不同种类的数据,以及编码方式
response.setContentType("text/xml;charset=UTF-8");
// 2. 强制浏览器下载
response.setHeader("content-disposition", "attachment;filename=" + 文件名 + 后缀);
// 3. 设置传输的文件大小
response.setHeader("Content-Length",文件长度.toString() / 文件长度 + ""); // 注意:这里length要传入字符串类型
// 浏览器尝试打开,支持office online或浏览器预览pdf功能
response.setHeader("content-disposition", "inline;filename=" + realName);
打开新页面:
target="_blank"
解决方案:
前端页面
页面:a标签,配置下载路径
<a href="下载路径">点击下载</a>
后端部分
Controller:1.获取需要写入Excel的数据2.数据处理3.写入Excel4.设置响应头(编码方式,文件类型。。。)5.开始传入OutputStream os = response.getOutputStream();os.write(Excel文件);os.close();
使用a标签,点击自动下载文件(Excel),不做页面跳转相关推荐
- js实现点击自动下载文件
原理主要是利用了a标签的download属性,可以控制在点击a标签时,自动下载(不设置download会打开新的页面) 代码实现如下 let aLink=document.createElement( ...
- js下载文件 java_[Java教程]使用js实现点击按钮下载文件
[Java教程]使用js实现点击按钮下载文件 0 2016-11-11 19:02:54 有时候我们在网页上需要增加一个下载按钮,让用户能够点击后下载页面上的资料,那么怎样才能实现功能呢?这里有两种方 ...
- [html] 使用a标签的download属性下载文件会有跨域问题吗?如何解决?
[html] 使用a标签的download属性下载文件会有跨域问题吗?如何解决? 最近刚遇到这个问题,后台返回的图片链接,点击按钮批量下载,a标签的 download 属性只对同源文件有效, 所以我们 ...
- 【Python】Selenium模拟点击网页下载文件
整个流程大致如下: 1.首先需要在http://chromedriver.storage.googleapis.com/index.html中下载chrome浏览器版本对应的驱动文件,可以在浏览器[设 ...
- python爬虫下载文件-【Py大法系列--03】Python如何自动下载文件
问题描述 Python自动下载文件,通用文件,包括但不限于压缩文件.图片等. 解决方法 一般情况下,Python下载文件的方式有以下几种: 利用urllib.urllib2,即Python爬虫用的最多 ...
- php 下载的压缩文件,php在线压缩打包rar并自动下载文件的例子
php在线压缩打包rar并自动下载文件是需要基于ZipArchive了, linux需开启zlib了,下面我们就一起来看看了,希望例子能够帮助到各位朋友. linux需开启zlib.下面是具体的开启方 ...
- python 自动下载文件_【Py大法系列--03】Python如何自动下载文件
问题描述 Python自动下载文件,通用文件,包括但不限于压缩文件.图片等. 解决方法 一般情况下,Python下载文件的方式有以下几种: 利用urllib.urllib2,即Python爬虫用的最多 ...
- 安装iCloud客户端,更改下载位置,报错:“更新时不能更改自动下载文件夹”
安装iCloud客户端,更改下载位置,报错:"更新时不能更改自动下载文件夹" 我安装了iCloud,我想讲iCloud中的照片下载到pc. 想要修改下载到pc端的位置,即哪个文件夹 ...
- FTP服务器搭建及自动下载文件脚本
FTP服务器搭建及自动下载文件脚本 一.FTP服务器搭建 二.浏览器与命令行测试 三.自动下载文件脚本 一.FTP服务器搭建 在虚拟机192.168.109.135上搭建FTP服务器 1.安装vsft ...
最新文章
- Python os模块常用命令
- github bilibili
- redmine上传大文件报错Request Entity Too Large
- linux命令eric,Linux命令行下连接无线网
- Docker中运行命令时提示:Cannot connect to the Docker daemony...以及设置docker开机启动
- c语言读写nfc,Android NFC M1卡读写芯片卡读写(CPU卡读写)(RFID读写)
- centos升级内核
- [转载]《STL源码剖析》阅读笔记之 迭代器及traits编程技法
- 用户自增长机制(一图胜千言)
- 用jdbc连接hive server需要用到的 几个jar包
- 【Java集合系列一】ArrayList解析
- EXCHANGE服务器一些常用的邮件限制方法笔记
- Nordic Blue Tooth
- 《隋唐演义》二:竞争对手的实力在不断增强
- 不容错过的Multisim14.0语言设置!!
- 交换机分布缓存_一种交换机的缓存管理方法
- Python基础教程
- [软件人生]写书与程序员
- 违反协议 oracle,Oracle增加表字段导致“违反协议”异常
- DNS 域名称服务