我对HTML有一个基本的概念。我想在我的样本网站创建下载链接,但我不知道如何创建它。我如何制作一个下载文件的链接而不是访问它?
当前回答
这个答案已经过时了。现在我们有了download属性。(另见MDN链接)
如果你所说的“下载链接”是指下载文件的链接,那就使用
<a href="http://example.com/files/myfile.pdf" target="_blank">Download</a>
target=_blank会在下载开始之前出现一个新的浏览器窗口。当浏览器发现该资源是一个文件下载时,该窗口通常会关闭。
请注意,浏览器已知的文件类型(例如JPG或GIF图像)通常会在浏览器中打开。
你可以尝试发送正确的标题来强制下载,比如这里。(需要服务器端脚本或访问服务器设置。)
其他回答
在支持HTML5的现代浏览器中,可以实现以下功能:
<a href="link/to/your/download/file" download>Download link</a>
你也可以用这个:
<a href="link/to/your/download/file" download="filename">Download link</a>
这将允许您更改实际正在下载的文件的名称。
如果您将文件托管在AWS中,这可能适用于您。代码很容易理解。由于浏览器不支持同源下载链接,解决这个问题的一种方法是将图像URL转换为base64 URL。然后,你就可以正常下载了。
var canvas = document.createElement("canvas")
var ctx = canvas.getContext('2d')
var img = new Image()
img.src = your_file_url + '?' + new Date().getTime();
img.setAttribute('crossOrigin', '')
var array = your_file_url.src.split("/")
var fileName = array[array.length - 1]
img.onload = function() {
canvas.width = img.naturalWidth
canvas.height = img.naturalHeight
ctx.drawImage(img,
0, 0, img.naturalWidth, img.naturalHeight,
0, 0, canvas.width, canvas.height)
var dataUrl = canvas.toDataURL("image/png", 1)
var a = document.createElement('a')
a.href = dataUrl
a.download = fileName
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
}
你可以用两种方式使用
<a href="yourfilename" download>Download</a>
在旧浏览器中,这个选项是不可用的
2nd
<a href="yourfilename" download="newfilename">Download</a>
在这里,您可以选择重命名您的文件,并下载与不同的名称
这个答案已经过时了。现在我们有了download属性。(另见MDN链接)
如果你所说的“下载链接”是指下载文件的链接,那就使用
<a href="http://example.com/files/myfile.pdf" target="_blank">Download</a>
target=_blank会在下载开始之前出现一个新的浏览器窗口。当浏览器发现该资源是一个文件下载时,该窗口通常会关闭。
请注意,浏览器已知的文件类型(例如JPG或GIF图像)通常会在浏览器中打开。
你可以尝试发送正确的标题来强制下载,比如这里。(需要服务器端脚本或访问服务器设置。)
除了前面提到的HTML5的<a download属性之外, 浏览器的下载到磁盘行为也可以由以下HTTP响应头触发:
Content-Disposition: attachment; filename=ProposedFileName.txt;
这是HTML5出现之前的做法(现在支持HTML5的浏览器仍然适用)。
推荐文章
- CSS/HTML:什么是使文本斜体的正确方法?
- 我如何才能在表中应用边界?
- 如何使一个DIV不包装?
- CSS div元素-如何显示水平滚动条只?
- 将Dropzone.js与其他字段集成到现有的HTML表单中
- 使用“!”的含义是什么?重要的”?
- 资源解释为样式表,但以MIME类型text/html传输(似乎与web服务器无关)
- 复选框输入是否只在被选中时才发布数据?
- 是类型="文本/css"必须在<链接>标签?
- 如何将LaTeX与Markdown混合?
- 如何使<div>总是全屏?
- 如何中心div垂直内绝对定位的父div
- 创建一个可变长度的字符串,用重复字符填充
- 有效使用< >(锚标签)没有href属性?
- 如何将全局字体应用到整个HTML文档