我对HTML有一个基本的概念。我想在我的样本网站创建下载链接,但我不知道如何创建它。我如何制作一个下载文件的链接而不是访问它?


当前回答

下载属性是HTML5中<a>标签的新属性

<a href="http://www.odin.com/form.pdf" download>下载表单</a> 或 <a href="http://www.odin.com/form.pdf" download="Form">下载表单</a> .

我更喜欢第一个,它在任何扩展方面都是可取的。

其他回答

这里还有一个更微妙的方法。

我想有链接,既允许在浏览器播放和显示,以及一个纯粹的下载。新的下载属性很好,但不能一直工作,因为浏览器播放或显示文件的强制要求仍然很强。

但. .这是基于检查URL的文件名的扩展名!您不希望篡改服务器的扩展映射,因为您希望以两种不同的方式交付相同的文件。因此,对于下载,您可以通过将文件软链接到一个对扩展映射不透明的名称来欺骗它,然后使用下载的重命名功能来修复该名称。

<a target="_blank" download="realname.mp3" href="realname. mp3"未知”>下载< / > <a target="_blank" href="realname.mp3">播放它</a> .mp3

我希望只是抛出一个虚拟的查询结束或以其他方式混淆扩展将工作,但遗憾的是,它没有。

如果您将文件托管在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="www.yoursite.com/theThingYouWantToDownload">Link name</a>

因此,example.com网站上的文件名。jpg将如下所示

<a href="www.example.com/name.jpg">Image</a>

下载链接是指向您想要下载的资源的链接。它的构造方式与其他链接相同:

<a href="path to resource.name of file">Link</a>

<a href="files/installer.exe">Link to installer</a>

你可以用两种方式使用

<a href="yourfilename" download>Download</a>

在旧浏览器中,这个选项是不可用的

2nd

<a href="yourfilename" download="newfilename">Download</a>

在这里,您可以选择重命名您的文件,并下载与不同的名称