2010-05-08 27 views
161

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

+6

对这个问题的接受标志应该进行切换。 – 2014-12-25 23:54:35

回答

119

此答案已过时。我们现在具有描述为heredownload属性。

如果“下载链接”你的意思是一个链接到要下载的文件,使用

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

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

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

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

+1

为什么不使用下载属性,如果你得到像JPG格式的文件,它将下载,而不是只是打开。 – Ben 2014-10-11 00:46:10

+2

请忽略“target ='_ blank'”,因为这在IE中不起作用。你甚至测试过它吗? – Tara 2014-12-21 21:39:46

+3

@Dudeson请详细说明“不起作用”以及您正在谈论的IE版本。 (现在使用下面TIIUNDER最近的答案描述的方法是安全的,但它应该得到接受标记。) – 2014-12-25 23:51:01

9

下载链接将是您要下载的资源的链接。它以同样的方式构成,任何其他链接将是:

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

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

像这样

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

所以在网站example.com文件name.jpg是这样

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

后者的问题是它会在浏览器中打开,不提供下载和保存。 – 2010-05-08 10:53:53

+7

不起作用;浏览器会将其视为“。/ www.example.com/name.jpg”的相对链接 - 您必须使用“http://”作为指定域的绝对链接。 – 2010-05-08 10:54:25

+0

@Delan很好看。 – 2010-05-08 10:56:16

8

要链接到的文件,做同样的任何其他页面链接:

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

给力的事情,即使他们有一个嵌入式插件(的Windows + QuickTime的=啊),你可以在你的htaccess/apache2.conf使用它来下载:

AddType application/octet-stream EXTENSION 
+0

谢谢!这非常简单,并且是服务器范围内的!:D 我发现这个链接阐述了一点点。谢谢。 http://www.htaccess-guide.com/adding-mime-types/ – 2014-04-27 01:36:04

+0

这将使所有类型的文件只下载。很好,如果这是你想要的,但可能会导致适合,如果你忘了,并希望另一种类型的文件显示在浏览器中,而不是下载。 – TecBrat 2015-09-21 18:08:49

330

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

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

您也可以使用此:

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

这将允许你改变实际被下载的文件的名称。

+0

我使用相同的代码下载PFD文件,我在所有浏览器中测试都支持,但在Safari浏览器此代码不工作Safari浏览器,而不是下载PDF文件在新标签打开。 – 2015-02-23 08:14:59

+14

Safari和IE不支持。 http://www.w3schools.com/tags/att_a_download.asp – 2015-06-11 15:23:34

+4

@SulemanMirza“现代浏览器与HTML5”,所以一切都很好。 – 2015-09-08 14:17:11

18

另外(或更换)已经提到的HTML5的<a download属性,
浏览器的下载到磁盘行为也可以通过以下HTTP响应头触发:

Content-Disposition: attachment; filename=ProposedFileName.txt; 

这是在HTML5之前做的方法(并且仍然支持HTML5的浏览器)。

+1

但是这需要一个服务器端的实现,是否正确? – Lombas 2015-11-25 16:01:23

+0

@Lombas是的,只有服务器可以设置http响应头。 – Myobis 2015-11-26 08:36:48

+0

这是完整的答案吗?您还需要发送内容类型标题并读取该文件以强制下载。可能想和你的答案。完整答案在这里:http://stackoverflow.com/a/1465631/2757916。 – 2016-09-25 07:10:45

4

这个线程可能是现在的古代,但是这对我的本地文件在html5中起作用。

对于PDF文件:

<p><a href="file:///........example.pdf" download target="_blank">test pdf</a></p>

这将打开一个新窗口PDF和允许你(至少在Firefox)下载。对于任何其他文件,只需将其作为文件名即可。对于图片和音乐,尽管您希望将它们存储在与您的网站相同的目录中。因此,它会像

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

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

<a href="http://www.odin.com/form.pdf" download>Download Form</a>

<a href="http://www.odin.com/form.pdf" download="Form">Download Form</a>

我喜欢的第一个最好的就任何延伸。

0

下载属性在IE中不起作用,它完全忽略了“下载”。如果href指向远程站点,则下载在Firefox上不起作用。所以Odin的例子在Firefox 41.0.2上不起作用。

0

我知道我迟到了,但是这是I 1小时搜

<?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>