今天有个使用a标签下载一个 .txt 文件,但是使用了不少方法,在点击下载的时候总是会直接打开被下载的文件,但是下载其他格式的文件就不会;也在网上找了不少资料

一、尝试href + download方法

有得说



测试是页面是这样

二、尝试另一种href + download方法

也有人说

要不就是这样

三、尝试createElement方法

也使用过这种


function download(filename, text) {
var element = document.createElement('a');
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
element.setAttribute('download', filename); element.style.display = 'none';
document.body.appendChild(element); element.click(); document.body.removeChild(element);
} download("hello.txt","This is the content of my file :)")

这个直接创建的文件可以下载,但是

element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));

改为服务端地址如element.setAttribute('href', 'fileurl');就不行了

四、尝试form 方法

也使用过这种


$('<form method="post" target="_blank" role="form" action="'+data.urlPath+data.fileName+'" hidden="hidden"></form>') .appendTo('body').submit().remove();



这个一用页面这样了

晕!

五、尝试XMLHttpRequest方法

还用过这种

function downloadIamge() {
var url = "";
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);//get请求,请求地址,是否异步
xhr.responseType = "blob"; // 返回类型blob
xhr.onload = function () {// 请求完成处理函数
if (this.status === 200) {
var blob = this.response;// 获取返回值
var a = document.createElement('a');
a.download = 'data.doc';
a.href=window.URL.createObjectURL(blob);
a.click();
}
};
// 发送ajax请求
xhr.send(); }

但是这个好像把事情搞大了,下个文件而已嘛,还得把XMLHttpRequest请来感觉有些大材小用了(并且这里没有使用到 后端接口,没有设置允许跨域可想而知请求是不可能成功的),还是重新再找

六、最终还是使用href + download方法解决问题

最后仔细一想,等等,好像get到了,其实就是这个a他在认识的文件的情况下出现了跳转吗!所以有时候下载其他什么压缩包之类的其他类型文件都能顺利搞定

那问题就简单了


<!--标签属性href,使其指向空或不返回任何内容。如:-->
<a href="javascript:void(0);" >点此无反应javascript:void(0)</a> <a href="javascript:;" >点此无反应javascript:</a> <!--标签事件onclick,阻止其默认行为。如:-->
<a href="" onclick="return false;">return false;</a> <a href="#" onclick="return false;">return false;</a>

最后将页面修改为


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test file download by tag of a</title>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
</head> <body>
<a href="#" download="fileurl">download8888</a>
</body> </html>

哎,这么简单纠结半天,再次留下了没有技术的眼泪

使用a标签下载**.txt文件, 而不是直接打开的更多相关文章

  1. 有关谷歌下载PDF文件而不是直接打开预览的问题

    找了很多帖子,都不行, 解决方法把链接处理成blob文件再调用下载. 但是仍然不行,最终原因找到: 缺少了这一部创建,需要把二进制数据重新用 Blob对象申明下 let data = new Blob ...

  2. IIS6.0禁止用户下载txt文件

    服务器win2003+IIS6.0,在IIS上限制下载.txt文件,方法比较简单,在IIS的应用程序扩展名映射中为资源扩展名指定一个错误的可执行文件即可. 打开记事本,直接将空内容保存为C:\WIND ...

  3. 下载apk文件浏览器会直接打开并显示乱码的问题

    今天同事反映他的apk文件在自己的老项目中下载有问题:下载apk文件浏览器会直接打开并显示乱码,在别的项目中就没有问题. 后分析response的content-type发现,老项目的类型是text/ ...

  4. .NET 在浏览器中下载TXT文件

    通常我们用浏览器打开Txt文件时候,浏览器会直接打开,我们想要txt下载到本地该怎么操作,用js也可以,单不能兼容所有的浏览器,所以我们可以在服务端做处理,代码如下: //TXT文件生成页面 publ ...

  5. HTML a 标签 下载 apk 文件

    代码:   <a href="http://www.abc2016.com/phone_Client/shouji.apk" class="download_inp ...

  6. txt文件怎么设置默认打开是用这个EditPlus软件打开

    1.如果是正常安装的Editplus,只需要右击“txt文件”,在“打开方式”中选择“打开程序”,再点击“浏览”,找到“Editplus”打开,再将“始终使用选择的程序打开这种文件”前面的“口”选中, ...

  7. HTML 单击a标签 实现下载文件而不是浏览器打开预览

    <a d ownload class="down" title="">

  8. ABAP下载txt文件

    IF NOT DOWN_F[] IS INITIAL.    CASE DOWN_MODE . "下载模式是放在所选路径下的.TXT文档中      WHEN 'X' .        CA ...

  9. 点击a标签实现txt文件另存的效果

    亲测成功,使用servlet实现的,核心代码: 前台代码: function downModel(filePath){ var formFile=$("<form>") ...

  10. JSP下载txt 和 Excel两种文件

    JSP下载txt 和 Excel两种文件 jsp 下载txt文件和excel文件   jsp 下载txt文件和excel文件 最近做了个用jsp下载的页面 将代码贴出来 权作记录吧 1 下载txt文件 ...

随机推荐

  1. 在CentOS中安装Docker

    概述 Docker是一款使用Golang开发的开源容器引擎,我们可以使用Docker将自己的应用和相关依赖进行打包,实现在不同服务器上进行快速部署,而不需要再更多关注部署环境的差异性.结合kubern ...

  2. Day04笔记

    01.explicit的作用(了解) class Maker { public: //explicit只能放在构造函数前面,构造函数只有一个参数或其他参数有默认值时 explicit Maker(in ...

  3. 谷歌浏览器配置Selenium,并配合python使用

    python环境准备 python 需要安装selenium ,这个直接pip安装即可 pip install selenium -i http://pypi.douban.com/simple -- ...

  4. Maven 的仓库、周期和插件

    一.Maven 仓库 在 Maven 的世界中,任何一个依赖.插件或者项目构建的输出,都可以称为构建.Maven 在某个统一的位置存储所有项目的共享的构建,这个统一的位置,我们就称之为仓库.任何的构建 ...

  5. git初始化流程

    1. 添加 SSH key 一台主机仅需要设置一次 1.1 检查主机是否已经有 SSH key 只需要检查~/.ssh下是否存在 id_rsa.pub 或 id_dsa.pub.若已存在,跳转至步骤3 ...

  6. [大数据]sqoop安装与运用

    1 文由 项目使用场景:OLTP Oracle 数据导入到 OLAP HIVE 2 Sqoop简述 Apache Sqoop(TM) 是一款开源的ETL工具,设计用于在 Apache Hadoop和结 ...

  7. [Linux]Linux中安装软件的方式?

    近日处理安全漏洞时,出现了这样一个问题: 判断某软件组件是通过何种方式安装的. 知道是何种方式安装,才方便做进一步的解决(升级/配置/卸载等操作) 1 解压即用 例如: sublime_text.py ...

  8. abc285G

    ABC 285 G - Tatami Solution 网络流 网格图是一个天然二分图, 可以按 横纵坐标之和 的奇偶性将相邻两格分属于左部和右部. 记'?' 或 '2' 的格子为待匹配点, 记横纵坐 ...

  9. 我来泼盆冷水:正面迎击AI的时代千万别被ChatGPT割了韭菜

    前言 ChatGPT从出来的时候我就一直密切关注,为此还加了不少群,用了不少套壳的程序,公司还开了专门的培训会,技术团队还为此搭建了接入ChatGPT的服务,帮助全公司的产品.商务.测试.运维.研发一 ...

  10. 全新跨平台版本.NET敏捷开发框架-RDIFramework.NET5.0震撼发布

    RDIFramework.NET,基于全新.NET Framework与.NET Core的快速信息化系统敏捷开发.整合框架,给用户和开发者最佳的.Net框架部署方案.为企业快速构建跨平台.企业级的应 ...