如何在HTML中创建下载链接?

如何在HTML中创建下载链接?,html,download,Html,Download,我对HTML有一个基本的概念。我想在我的示例网站中创建下载链接,但我不知道如何创建它。如何创建链接以下载文件而不是访问文件 这个答案已经过时了。我们现在有了新的选择。(另见此) 如果“下载链接”是指指向要下载的文件的链接,请使用 <a href="http://example.com/files/myfile.pdf" target="_blank">Download</a> target=_blank将在下载开始前显示一个新的浏览器窗口。当浏览器发现资源是文件

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

这个答案已经过时了。我们现在有了新的选择。(另见此)

如果“下载链接”是指指向要下载的文件的链接,请使用

  <a href="http://example.com/files/myfile.pdf" target="_blank">Download</a>

target=_blank
将在下载开始前显示一个新的浏览器窗口。当浏览器发现资源是文件下载时,该窗口通常会关闭

请注意,浏览器已知的文件类型(例如JPG或GIF图像)通常会在浏览器中打开


您可以尝试发送正确的标题以强制下载,例如。(需要服务器端脚本或访问服务器设置。)

下载链接是指向要下载的资源的链接。其构造方式与任何其他链路的构造方式相同:

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

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

像这样

<a href="www.yoursite.com/theThingYouWantToDownload">Link name</a>

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

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

要链接到文件,请执行与任何其他页面链接相同的操作:

<a href="...">link text</a>

在支持HTML5的现代浏览器中,以下是可能的:

<a href="link/to/your/download/file" download>Download link</a>

您还可以使用以下选项:

<a href="link/to/your/download/file" download="filename">Download link</a>


这将允许您更改实际下载文件的名称。

此外(或替换)HTML5的
此线程可能已经过时,但对于我的本地文件,它在HTML5中起作用

PDF格式:

这将在新窗口中打开pdf,并允许您下载(至少在firefox中)。对于任何其他文件,只需将其设置为文件名。对于图像和音乐,您希望将它们存储在与站点相同的目录中。那就好像

<p><a href="images/logo2.png" download>test pdf</a></p>


下载属性对于



我更喜欢第一个,它比任何分机都好。

我知道我迟到了,但这是我搜索了一个小时后得到的

 <?php 
      $file = 'file.pdf';

    if (! file) {
        die('file not found'); //Or do something 
    } else {
       if(isset($_GET['file'])){  
        // Set headers
        header("Cache-Control: public");
        header("Content-Description: File Transfer");
        header("Content-Disposition: attachment; filename=$file");
        header("Content-Type: application/zip");
        header("Content-Transfer-Encoding: binary");
        // Read the file from disk
        readfile($file); }
    }

    ?>

对于可下载的链接,我这样做了

<a href="index.php?file=file.pdf">Download PDF</a>

您可以按照我的方式以各种方式下载。虽然由于未设置“允许弹出窗口”权限,文件可能无法下载,但在您的环境中,这将非常有效


这里还有一个微妙之处可以提供帮助

我想有链接,既允许在浏览器中播放和显示,以及一个纯粹的下载。新的下载属性很好,但并不总是有效,因为浏览器播放或显示文件的强制力仍然很强

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




后者的问题是,它将在浏览器中打开,不提供下载和保存。不起作用;浏览器会将其视为指向
/www.example.com/name.jpg
的相对链接-您必须使用
http://
与指定域建立绝对链接。谢谢!这要简单得多,而且是服务器范围的!:我发现这个链接更详细一些。非常感谢。这将使该类型的所有文件只能下载。如果这是您想要的,则可以,但如果您忘记了并希望在浏览器中显示另一个该类型的文件而不是下载,则可能会引起不适。为什么不使用“下载”属性,如果您获得类似jpg的文件,它将下载,而不是仅打开。请省略“target=”(U blank)”,因为这在IE中不起作用。你测试过吗?@Dudeson请指定什么“不起作用”以及你所说的IE版本。(不过,现在可以安全地使用TIIUNDER最近的答案所描述的方法。它应该得到接受分数。)@Sergiu答案是7岁。我不能删除它,而且询问者还没有响应我的请求切换接受标记。。。我们无能为力,不过我会添加一个链接到更新的answer@Dani参见下面TIIUNDER的回答,现在哪个是正确的。这个问题的接受标记应该被切换。我使用相同的代码下载PFD文件,并且我在所有浏览器中都测试了所有支持,但在safari中,此代码不适用于safari,而不是在新选项卡中打开下载pdf文件。适用于Chrome、Edge、Firefox、Opera和最新的Android 4.4+浏览器,而不适用于Internet Explorer和Safari。@NongthonbamTonthoi您不能使用javascript将href动态分配给a标记这不一定有效,因为它仅限于相同的源URL。这对我不起作用,我有一个
.exe
文件,希望用户下载。然而,我自己也试着去验证,但这不起作用。它只会让我看到源代码,我不想查看源代码。但这需要服务器端实现,对吗?@Lombas是的,只有服务器可以设置http响应头。这是完整的答案吗?您还需要发送内容类型头并读取文件以强制下载。我可能想和你的答案联系起来。完整答案如下:。这非常适合服务器端实现,而且内容类型也非常精确。与下载属性相比,它得到了很好的支持。这太糟糕了。当我看到这样一个下载链接时,我不得不忍住尝试index.php?file=index.php的冲动,因为在代码的复制/粘贴实现中,它最终会让恶意用户访问您的数据库,谁知道是什么。这是个坏主意。首先,因为您正在使您的服务器工作得超出需要。第二,因为用户可以下载任何文件:p
 <?php 
      $file = 'file.pdf';

    if (! file) {
        die('file not found'); //Or do something 
    } else {
       if(isset($_GET['file'])){  
        // Set headers
        header("Cache-Control: public");
        header("Content-Description: File Transfer");
        header("Content-Disposition: attachment; filename=$file");
        header("Content-Type: application/zip");
        header("Content-Transfer-Encoding: binary");
        // Read the file from disk
        readfile($file); }
    }

    ?>
<a href="index.php?file=file.pdf">Download PDF</a>