使用jQuery下载文件

Dod*_*nas 108 jquery file download

如何在用户单击链接时提示下载.

例如,而不是:

<a href="uploads/file.doc">Download Here</a>
Run Code Online (Sandbox Code Playgroud)

我可以用:

<a href="#">Download Here</a>

 $('a').click... //Some jquery to download the file
Run Code Online (Sandbox Code Playgroud)

这样,Google就不会将我的HREF和私人文件编入索引.

这可以用jQuery完成,如果是这样,怎么样?或者应该用PHP或其他东西来完成?

kar*_*m79 156

我可能会建议这样做,作为一个更优雅的降级解决方案,使用preventDefault:

$('a').click(function(e) {
    e.preventDefault();  //stop the browser from following
    window.location.href = 'uploads/file.doc';
});

<a href="no-script.html">Download now!</a>
Run Code Online (Sandbox Code Playgroud)

即使没有Javascript,至少这种方式用户也会得到一些反馈.

  • jQuery是**的答案. (20认同)
  • 工作得很好,但得到一些MIME类型错误.好奇,如果有任何方法可以通过它们? (2认同)
  • 你解决了MIME类型警告吗?我得到"资源解释为文档,但转移MIME类型......"非常感谢. (2认同)

Rob*_*Rob 22

如果您不希望搜索引擎为某些文件编制索引,您可以使用robots.txt告诉网络蜘蛛不要访问您网站的某些部分.

如果您只依赖于javascript,那么一些没有它的用​​户将无法点击您的链接.

  • 6年后:没有javascript浏览? - 好吧,你也可以去散步吧. (3认同)
  • 很高兴了解“robots.txt”。谢谢你。 (2认同)

Kob*_*obi 18

这是一篇很好的文章,展示了从搜索引擎隐藏文件的许多方法:

http://antezeta.com/news/avoid-search-engine-indexing

JavaScript不是索引页面的好方法; 它不会阻止用户直接链接到您的文件(从而将其显示给抓取工具),正如Rob提到的那样,并不适用于所有用户.
一个简单的解决方法是添加rel="nofollow"属性,但是如果没有robots.txt,它就不完整了.

<a href="uploads/file.doc" rel="nofollow">Download Here</a>
Run Code Online (Sandbox Code Playgroud)

  • [这是Webmasers的Google帮助的另一篇文章](http://www.google.com/support/webmasters/bin/answer.py?hl=de&answer=96569),这有助于我理解"nofollow"或"我"rel. (2认同)

Mac*_*ony 11

是的,您必须将window.location.href更改为您要下载的文件的URL.

window.location.href = 'http://www.com/path/to/file';
Run Code Online (Sandbox Code Playgroud)


EL *_*bib 9

 var link=document.createElement('a');
 document.body.appendChild(link);
 link.href=url;
 link.click();
Run Code Online (Sandbox Code Playgroud)


小智 8


Otv*_*nii 6

通过声明window.location.href = 'uploads/file.doc';您显示存储文件的位置.您当然可以使用.htacess强制存储文件所需的行为,但这可能并不总是很少....

最好创建一个服务器端的php文件并将其放入其中:

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$_REQUEST['f']);
readfile('../some_folder/some_subfolder/'.$_REQUEST['f']); 
exit;
Run Code Online (Sandbox Code Playgroud)

此代码将返回任何文件作为下载,而不显示您实际存储它的位置.

你打开这个php文件 window.location.href = 'scripts/this_php_file.php?f=downloaded_file';