如何使用jQuery下载文件?

5

我需要使用 jQuery 下载一个文件(pdf/zip/txt ...)。

我尝试了什么?

<a href="abc.pdf">click</a>

当我点击链接时,文件会在浏览器中打开。

使用jQuery...

$('a').click(function(e)
{
e.preventDefault();
var link = $(this).attr('href');
window.location = link;
});

这也会导致文件在浏览器中打开。但是,我想要下载文件而不是在浏览器中显示。PHP中,我们可以使用 header('Content-Disposition: attachment; filename="test.mp3"');
但是,我必须仅使用jquery/javascript..

这个 $(a).click(function(e) 应该改成 $('a').click(function(e)。而且,首先你为什么要阻止原始行为并手动执行被阻止的行为呢..? - Rajaprabhu Aravindasamy
1
你的浏览器可以在线打开zip文件吗? - Ry-
@RajaprabhuAravindasamy。抱歉,这是一个打字错误。我只是为了尝试使用jQuery而进行了预防。 - Deepu Sasidharan
@false,实际上我使用PDF文件。 - Deepu Sasidharan
1
可能是重复的问题:https://dev59.com/Q2865IYBdhLWcg3wkfcW - Retsam
他们的答案归结为:“您需要能够控制要下载的文件的MIME类型”,因此,如果您试图让他们从Web上下载某些任意文件,则无法使用此方法。 - Retsam
1个回答

13

使用新的HTML5下载属性可以触发下载。

<a href="path_to_file" download="proposed_file_name">Download</a>

path_to_file是绝对路径或相对路径,proposed_file_name是要保存的文件名(可以为空,则默认为实际文件名)。


好知道!另外请注意,不支持Safari。 - jontewks
是的,这在Chrome和Firefox中可以工作,除非文件/图像来自不同的服务器:Chrome 65+和Firefox仅支持同源下载链接。例如,我使用Amazon S3进行图像存储,使得此解决方案无法实现。 - Mark
虽然这是一个有用的答案,但它并没有回答问题,问题是如何使用jquery下载文件。 - BobbyMick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接