我有一个简单的文本文件,我想在任何锚标记链接上下载该文件。
但是,当我点击链接txt文件显示但未下载时。
我试过这段代码
<html>
<head>
<title>File</title>
</head>
<body>
<a href="test.txt">Click here</a>
</body>
</html>
答案 0 :(得分:51)
点击链接时下载文件(而不是导航到文件):
<a href="test.txt" download>Click here</a>
下载文件并将其重命名为mytextdocument.txt:
<a href="test.txt" download="mytextdocument">Click here</a>
download属性指定当用户单击超链接时将下载目标。
仅当设置了href属性时才使用此属性。
属性的值将是下载文件的名称。允许值没有限制,浏览器会自动检测正确的文件扩展名并将其添加到文件中(.img,.pdf,.txt,.html等)。
如果省略该值,则使用原始文件名。
答案 1 :(得分:4)
您可以使用Content-Disposition
标题。
您可以使用PHP或.htaccess
进行此操作。
<强> PHP:强>
<?php
header("Content-Disposition: attachment");
header("Content-Type: text/plain"); // optional
readfile("yourfile.txt");
?>
然后您可以使用PHP的URL或将TXT的URL重定向到它。如果你想使用PHP的URL但想要用原始名称保存文件,你可以在那里交换这一行:
header("Content-Disposition: attachment; filename=yourfile.txt");
<强> .htaccess
强>
<Files yourfile.txt>
Header set Content-Disposition attachment
</Files>
答案 2 :(得分:0)
当内容类型作为文本发送时,文本文件将显示在浏览器中。您必须更改服务器以使用不同的内容类型发送它,或使用PHP等语言将其作为下载发送。
答案 3 :(得分:0)
这将下载您的文本文件,并将其重命名:
<a href="http://www.example.com/myfile.txt" download="My Text File">click here</a>
答案 4 :(得分:0)
您可以做到
<a href="data:text/plain;charset=UTF-8,test.txt" download>Click here</a>
或者就我而言,我需要更动态的东西
var downloadFile = function(url){
let a = document.createElement('a');
a.href = 'data:text/plain;charset=UTF-8,' + '' + url;
a.download = url.substr(url.lastIndexOf('/') + 1);
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
}
主要区别是附加
data:text / plain; charset = UTF-8,
到我的文本文件网址
downloadFile('http://my.txt');