记录下最近项目中遇到的问题

知识点:

编码:防止乱码

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),不做页面跳转相关推荐

  1. js实现点击自动下载文件

    原理主要是利用了a标签的download属性,可以控制在点击a标签时,自动下载(不设置download会打开新的页面) 代码实现如下 let aLink=document.createElement( ...

  2. js下载文件 java_[Java教程]使用js实现点击按钮下载文件

    [Java教程]使用js实现点击按钮下载文件 0 2016-11-11 19:02:54 有时候我们在网页上需要增加一个下载按钮,让用户能够点击后下载页面上的资料,那么怎样才能实现功能呢?这里有两种方 ...

  3. [html] 使用a标签的download属性下载文件会有跨域问题吗?如何解决?

    [html] 使用a标签的download属性下载文件会有跨域问题吗?如何解决? 最近刚遇到这个问题,后台返回的图片链接,点击按钮批量下载,a标签的 download 属性只对同源文件有效, 所以我们 ...

  4. 【Python】Selenium模拟点击网页下载文件

    整个流程大致如下: 1.首先需要在http://chromedriver.storage.googleapis.com/index.html中下载chrome浏览器版本对应的驱动文件,可以在浏览器[设 ...

  5. python爬虫下载文件-【Py大法系列--03】Python如何自动下载文件

    问题描述 Python自动下载文件,通用文件,包括但不限于压缩文件.图片等. 解决方法 一般情况下,Python下载文件的方式有以下几种: 利用urllib.urllib2,即Python爬虫用的最多 ...

  6. php 下载的压缩文件,php在线压缩打包rar并自动下载文件的例子

    php在线压缩打包rar并自动下载文件是需要基于ZipArchive了, linux需开启zlib了,下面我们就一起来看看了,希望例子能够帮助到各位朋友. linux需开启zlib.下面是具体的开启方 ...

  7. python 自动下载文件_【Py大法系列--03】Python如何自动下载文件

    问题描述 Python自动下载文件,通用文件,包括但不限于压缩文件.图片等. 解决方法 一般情况下,Python下载文件的方式有以下几种: 利用urllib.urllib2,即Python爬虫用的最多 ...

  8. 安装iCloud客户端,更改下载位置,报错:“更新时不能更改自动下载文件夹”

    安装iCloud客户端,更改下载位置,报错:"更新时不能更改自动下载文件夹" 我安装了iCloud,我想讲iCloud中的照片下载到pc. 想要修改下载到pc端的位置,即哪个文件夹 ...

  9. FTP服务器搭建及自动下载文件脚本

    FTP服务器搭建及自动下载文件脚本 一.FTP服务器搭建 二.浏览器与命令行测试 三.自动下载文件脚本 一.FTP服务器搭建 在虚拟机192.168.109.135上搭建FTP服务器 1.安装vsft ...

最新文章

  1. Python os模块常用命令
  2. github bilibili
  3. redmine上传大文件报错Request Entity Too Large
  4. linux命令eric,Linux命令行下连接无线网
  5. Docker中运行命令时提示:Cannot connect to the Docker daemony...以及设置docker开机启动
  6. c语言读写nfc,Android NFC M1卡读写芯片卡读写(CPU卡读写)(RFID读写)
  7. centos升级内核
  8. [转载]《STL源码剖析》阅读笔记之 迭代器及traits编程技法
  9. 用户自增长机制(一图胜千言)
  10. 用jdbc连接hive server需要用到的 几个jar包
  11. 【Java集合系列一】ArrayList解析
  12. EXCHANGE服务器一些常用的邮件限制方法笔记
  13. Nordic Blue Tooth
  14. 《隋唐演义》二:竞争对手的实力在不断增强
  15. 不容错过的Multisim14.0语言设置!!
  16. 交换机分布缓存_一种交换机的缓存管理方法
  17. Python基础教程
  18. [软件人生]写书与程序员
  19. 违反协议 oracle,Oracle增加表字段导致“违反协议”异常
  20. DNS 域名称服务

热门文章

  1. Mybatis是什么?
  2. C++\OpenGL\QT 房源管理系统
  3. python bytes 改值_Python3 bytes() 函数详解 将参数转为不可变的字节数组
  4. selenium+webdriver操作cookie
  5. Windows字体结构LOGFONT
  6. 2023富而喜悦新品——青少年沙盘隆重上市!
  7. 一些疫情数据分析的思路,文末提供最新数据与代码
  8. UVM学习之路(5)— 完整的UVM验证平台
  9. vue背景图显示不全
  10. 计算机网络——华为QINQ详解及其实验配置