5

I have to download a file (pdf/zip/txt ...) using jquery.

What i tried ??

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

When i click the link the file is opened in browser.

using jquery...

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

This also leads to open the file in browser. But i want to download it not display in browser.

In PHP we can use header('Content-Disposition: attachment; filename="test.mp3"');

But i have to use only jquery/javascript..

6
  • This $(a).click(function(e) should be like this $('a').click(function(e). And at the first place, why are you preventing the original behavior and doing the prevented behavior manually..? Commented Jul 2, 2014 at 5:16
  • 1
    Your browser opens zip files inline?
    – Ry-
    Commented Jul 2, 2014 at 5:17
  • @RajaprabhuAravindasamy. sorry its a typo..i prevent bcoz only to try with jquery.. Commented Jul 2, 2014 at 5:24
  • @false, actually i use pdf file. Commented Jul 2, 2014 at 5:25
  • 1
    Probably a duplicate of: stackoverflow.com/questions/3749231/…
    – Retsam
    Commented Jul 2, 2014 at 5:26

1 Answer 1

13

You can trigger a download by using the new HTML5 download attribute.

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

path_to_file is either an absolute or relative path, proposed_file_name the filename to save to (can be blank, then defaults to the actual filename).

3
  • Good to know! Also see no safari support.
    – jontewks
    Commented Jul 2, 2014 at 5:28
  • Yes this works in Chrome and Firefox unless the file/image is sourced on a different server: Chrome 65+ and Firefox only support same-origin download links. For example I use Amazon s3 for image storage making this solution not workable.
    – Mark
    Commented Aug 25, 2020 at 14:27
  • While this is a useful answer, it does not answer the question, which was how to download a file using jquery.
    – BobbyMick
    Commented Nov 16, 2021 at 13:30

Not the answer you're looking for? Browse other questions tagged or ask your own question.