jQuery скачать zip-файл с кнопки? - PullRequest
8 голосов
/ 21 мая 2010

Довольно неловко, сколько времени я трачу, пытаясь скачать zip-файл с кнопки ....

<button type='button' id='button-download'>download zipfile</button>


$("#button-download").live("click", function() {
    $.get("http://localhost/admin/zip/002140.zip"); // doesn't work?
})

Мне нужно кое-что пуленепробиваемое здесь, поэтому я спрашиваю здесь, спасибо.

Ответы [ 4 ]

7 голосов
/ 21 мая 2010

Используйте равнину:

<a href="http://localhost/admin/zip/002140.zip" id="button-download">download zipfile</a>

ссылка. Тогда он будет работать нормально (даже «пуленепробиваемый») без JavaScript. Он также предлагает больше традиционных возможностей, которые пользователи могут ожидать от ссылки на скачивание, например щелчок правой кнопкой мыши, сохранение или перетаскивание.

Конечно, вы можете использовать CSS, чтобы он выглядел как кнопка вместо ссылки. Но то, что это на самом деле , является ссылкой. Так вот как это должно быть отмечено.

5 голосов
/ 21 мая 2010

Вы должны установить свойство location.href, чтобы вызвать навигацию:

$("#button-download").live("click", function() {
  location.href = "http://localhost/admin/zip/002140.zip";
});

Вы также можете иметь простой элемент <a>, стилизованный под кнопку, так что даже пользователи, у которых отключен JavaScript, смогут скачать файл.

1 голос
/ 15 июля 2014

Немного опоздал на вечеринку, но думал, что поделюсь своим решением, как никто другой.

Вы можете иметь лучшее из обоих миров; простая HTML-ссылка и функция JS без потери пользователей, не являющихся JS.

<a id="download" href="http://www.example.com/download.zip">Download</a>

$("#download").on("click", function(e) {

    // cancel the link's original functionality
    e.preventDefault();

    // do something before downloading
    alert("Thanks for downloading!");

    // download file
    location.href = "http://www.example.com/download.zip";

});
1 голос
/ 21 мая 2010

То есть отправка AJAX-запроса.

Я не пробовал этого, но теоретически это должно работать. Если вы попытаетесь перейти к расположению загружаемого файла, он предложит вам загрузить, а не перейти на эту страницу.

<button type='button' id='button-download'>download zipfile</button>


$("#button-download").live("click", function() {
    window.location = "http://localhost/admin/zip/002140.zip";
})
...