一、HTML中的a标签实现点击下载

通常在咱们写项目的时候会遇到上传下载什么的,在上传完文件后会把文件的路径保存到数据库里以便下载,如果想不通过后台直接下载的话,可以把文件路径给a标签的属性href;

 <a href="/user/test/xxxx.txt">点击下载</a>

这样当用户打开浏览器点击链接的时候就会直接下载文件。

但是有个情况,比如txt,png,jpg等这些浏览器支持直接打开的文件是不会执行下载任务的,而是会直接打开文件,这个时候就需要给a标签添加一个属性“download”;

<a href="/user/test/xxxx.txt" download="文件名.txt">点击下载</a>

这里download也可以不写任何信息,会自动使用默认文件名。

二、问题:即使使用a标签的download属性,chrome浏览器还是会打开

追查问题原因:

服务器端返回的response中,content-type为text/plain,即数据以纯文本形式(text/json/xml/html)进行编码,其中不含任何控件或格式字符。chrome浏览器直接打开了该文本,并没有下载。

解决方案:使用ajax请求该url,获取到文本内容,手动实现下载。

//html代码:<aonClick={() => {this.downLoad(href);}}disabled={href ? false : true}>下载执行结果</a>
//js代码:
downLoad = url=> {
//后面加上‘&’,防止请求时,url后面添加问号会影响原来的url参数值let newurl = url + "&";let fileName = url.slice(url.lastIndexOf("/") + 1, url.indexOf("?"));let result = '';fetchGet(newurl, {}, { credentials: "include" }).then(response=> {result = JSON.stringify(response);var datastr = `data:text/json;charset=utf-8,${result}`;var downloadAnchorNode = document.createElement("a");downloadAnchorNode.setAttribute("href", datastr);downloadAnchorNode.setAttribute("download", fileName + ".json");downloadAnchorNode.click();downloadAnchorNode.remove();});};

三、写到最后

chrome浏览器对与txt,json等文件直接打开,而不下载的问题,困扰了一天,查找很多帖子无果。也曾经尝试使用a标签href+download属性,iframe,window.open,window.location.href的方式,都会出现打开不下载的问题。对于jar,zip等浏览器不支持预览的文件,使用a标签href+download属性的方法还是不错的。

json文件下载--防止chrome直接打开方案相关推荐

  1. 在Chrome中打开网页时出现以下问题 您的连接不是私密连接 攻击者可能会试图从 x.x.x.x 窃取您的信息(例如:密码、通讯内容或信用卡信息)

    现象:在Chrome中打开网页时出现以下问题 您的连接不是私密连接 攻击者可能会试图从 x.x.x.x 窃取您的信息(例如:密码.通讯内容或信用卡信息). 当点开"了解详情"后显示 ...

  2. Chrome浏览器打开异常慢的解决办法

    Chrome浏览器打开异常慢的解决办法 参考文章: (1)Chrome浏览器打开异常慢的解决办法 (2)https://www.cnblogs.com/Cate-Hunter/p/10856919.h ...

  3. 解决Chrome浏览器打开虾米音乐网页播放器时的排版问题

    2019独角兽企业重金招聘Python工程师标准>>> 几年了,虾米音乐网页播放器听音乐都有个纠结的地方,就是用Chrome浏览器打开时,排版会出错,表现为播放器右边一部分显示不出来 ...

  4. C#开发笔记之19-如何用C#实现优雅的Json解析(序列化/反序列化)方案?

    本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:C#开发笔记之19-如何用C#实现优雅的Json解析(序列化/反序列化)方案? | .Net中文网. C#开发笔记概述 另外可参考文章 ...

  5. Chrome无法打开文件的错误 [Not allowed to load local resource: file://XXXX]

    问题描述 <!--Add by oscar999--> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional// ...

  6. chrome无法打开任何网站提示证书过期

    遇到chrome无法打开任何网站提示证书过期的问题. 1.浏览器设置问题. 2.修改过电脑时间,导致时间不一致. 3.开启了监控工具,例如Fiddler, 今天自己就是因为开启了fiddler,导致浏 ...

  7. chrome浏览器打开网址找不到服务器IP

    chrome浏览器打开网址找不到服务器IP 电脑装完系统后,路由器重启了,安装了chrome浏览器,但是打开任何网址都显示找不到服务器ip,然后换360浏览器发现一切正常,说明网络是没问题的,然后通过 ...

  8. 使用chrome浏览器打开微信页面配置方式

    当我们打开微信浏览器的页面时,会提示这个 下面教大家用Chrome浏览器打开微信页面,以方便调试. 1.微信的UA(User agent:用户代理). 安卓微信UA: mozilla/5.0 (lin ...

  9. python3 Json转xmind代码与打开

    python3 Json转xmind代码与打开 问题 Json转xmind 生成文件并打不开 问题 Json转xmind格式,使用xmind包生成的xmind文件无法使用xmind软件打开. Json ...

  10. chrome浏览器打开网页默认全屏的方法_测试成功

    chrome浏览器打开网页默认全屏的方法 1.在桌面上右键创建快捷方式 2.在地址栏中输入: "C:\Program Files (x86)\Google\Chrome\Applicatio ...

最新文章

  1. 2个422 并联一个总线_株洲新添2个全国“一村一品”示范村,一个在炎陵
  2. 什么是NullReferenceException,如何解决?
  3. 比特位计数—leetcode338
  4. 父类一实现serializable_我的java基础学习易错点和易忘点总结(一)
  5. matlab传函零极点形式,2013实验一 MATLAB 中控制系统模型的建立与仿真
  6. 何谓 SQL 注入,这个漫画告诉你
  7. Velo 实验室集成 Chainlink 预言机喂价
  8. [转帖] bat方式遍历目录内的文件
  9. miniMobile(手机)
  10. Windows64位安装git
  11. 开发idea插件教程
  12. 项目管理表格模板/实用表格-需求
  13. google浏览器呗7654流氓解除
  14. python爬虫论文总结与展望怎么写_论文总结与展望怎么写?
  15. 攻克银联QPBOC L2认证的最后两个不过的案例(POS与卡片的数据交互分析)
  16. 原生JS实现网页导航条特效
  17. 集群出现块丢失,块找回,以及相关底层原理,fsck等
  18. 如何删除电脑上卸载软件的残留文件,清理软件残留?
  19. 数据库建表时,对于字段的数据类型的选择
  20. DataGridView绑定数据源后添加行

热门文章

  1. C10K问题及解决方案
  2. java软件开发是什么_java常用的开发软件是什么
  3. Java程序员必备的50道Kafka面试题及解析,面试再也不怕问Kafka了
  4. Spring的Bean生命周期
  5. linux下svn命令使用大全
  6. 悼念毛星云(浅墨)老师
  7. Spark安装及配置详细步骤
  8. Chapter9:Simulink建模与仿真
  9. 2.1 matlab特殊矩阵(零矩阵、幺矩阵、单位矩阵、魔方矩阵、范德蒙德矩阵和希尔伯特矩阵)
  10. 利用动态数组生成魔方矩阵