Дополнительно
Загрузка файла с помощью Javascript/jQuery
У меня очень похожее требование, указанное здесь.
Мне нужно, чтобы браузер пользователя запускал загрузку вручную, когда $('a#someID').click();
.
Но я не могу использовать метод window.href
, поскольку он заменяет содержимое текущей страницы на файл, который вы'пытаетесь загрузить.
Вместо этого я хочу, чтобы загрузка открывалась в новом окне/вкладке. Как это возможно?
322
20
Используйте невидимый
<iframe>
:Чтобы заставить браузер загрузить файл, который в противном случае он не смог бы отобразить (например, HTML или текстовые файлы), вам нужно, чтобы сервер установил MIME Type файла в нелепое значение, такое как
application/x-please-download-me
или альтернативноеapplication/octet-stream
, которое используется для произвольных двоичных данных.Если вы хотите открыть его только в новой вкладке, единственный способ сделать это - щелкнуть по ссылке с атрибутом
target
, установленным в_blank
.В jQuery:
При щелчке по этой ссылке файл будет загружен в новой вкладке/окне.
2019 обновление современных браузеров
Именно этот подход я бы сейчас рекомендовал с некоторыми оговорками:
2012 оригинальный подход на основе jQuery/iframe/cookie
Я создал плагин jQuery File Download plugin (Demo) (GitHub), который также может помочь в вашей ситуации. Он работает практически аналогично iframe, но имеет несколько интересных функций, которые я нашел довольно удобными:
Очень простая настройка с красивыми визуальными эффектами (jQuery UI Dialog, но не обязательно), все протестировано.
Пользователь никогда не покидает ту же страницу, с которой он начал скачивание файла. Эта функция становится критически важной для современных веб-приложений.
функции successCallback и failCallback позволяют четко определить, что видит пользователь в той или иной ситуации
В сочетании с jQuery UI разработчик может легко показать модальное окно, сообщающее пользователю, что идет загрузка файла, убрать модальное окно после начала загрузки или даже сообщить пользователю в дружественной манере, что произошла ошибка. Пример этого см. в Demo. Надеюсь, это кому-нибудь поможет!
Вот простой демонстрационный пример использования плагина source с обещаниями. Страница demo page включает в себя множество других, 'лучших UX' примеров.
Проверьте, если ваша цель-браузера (- ов) будет выполняться приведенный выше фрагмент плавно: <БР>http://caniuse.com/#feat=download
Я'м удивлен, не многие люди знают об атрибуте загрузки для элементов. Пожалуйста, помогите распространить слово об этом! Вы можете иметь скрытый HTML-ссылку, и подделать нажмите на нее. Если HTML-ссылка имеет атрибут Скачать он скачивает файл, а не мнения его, несмотря ни на что. Здесь'ы код. Скачать кошки фото, если он может найти его.
в
в
Примечание: Это не поддерживается во всех браузерах: http://www.w3schools.com/tags/att_a_download.asp
Я рекомендую использовать HTML5 для загрузки вместо jQuery:
Это будет скачать файл, не открывая его.
Если вы уже используете jQuery, вы можете воспользоваться им для создания более компактного фрагмента Версия ответа Эндрю на jQuery:
Работает на Chrome, Firefox и IE8 и выше.
Позже здесь только семь лет приходит одно решение на jQuery, используя форму вместо iframe или ссылке:
Я'вэ проверял это на
Если кто знает какие-то недостатки с этим решением я'd быть очень рад услышать о них.
Полная демо:
Простой пример с использованием окна iframe`
Затем просто вызвать функцию, где вы хотите:
downloadURL('путь/к/моему/файл');
Это может быть полезно, если вы не требуете, чтобы перейти на другую страницу. Это функция JavaScript, поэтому может быть использован на любой платформе, где бэкэнд-это в JavaScript
Может быть как раз ваш JavaScript открыть страницу, которая просто загружает файл, например, когда вы перетащите ссылку на скачивание новой вкладке:
В открывшемся окне открыть страницу загрузки, который автоматически закрывается.
Я не'т знать, если вопрос слишком старый, но установка окна.место для Загрузки URL-адреса будет работать, как долго, как тип MIME является правильным (например, zip-архив).
Самый полный и рабочий (проверено) кода для загрузки данных для firefox, chrome и т. е. код является следующим. Предположим, что данные в texarea области, то есть идентификатор='textarea_area' и именем Имя файла, откуда будут загружены данные.
а потом просто позвони
Для Скачивания Инициирования.
Блок для настройки правильный тип MIME для диалог загрузки может быть следующим:
Для улучшения представьте себе выключатель 'ы ответьте, это поддерживается на ФФ & т. е. :
Другими словами, просто используйте функцию
dispatchevent метод "вместо" нажать()
;У меня были хорошие результаты с помощью тега form, так как он работает везде, и вы не'т иметь, чтобы создать временные файлы на сервер. Метод работы такой.
На стороне клиента (HTML-страница) создается невидимая такой форме
Затем добавьте этот код JavaScript к кнопке:
На стороне сервера у вас есть следующий PHP-код в download.php`:
Вы даже можете создавать zip файлы такие данные:
Самая лучшая часть это не оставляет никаких остаточных файлов на ваш сервер, так как все создается и уничтожается на лету!
для меня это работает нормально, проверено в В72 хром
Я закончил с использованием фрагментом ниже, и это работает в большинстве браузеров, в IE, хотя не проверял.
в
в
Ответ, представленный hitesh на 30 декабря '13 в работу. Он просто требует небольшой корректировки:
Файл php может вызывать саму себя. Другими словами, просто создайте файл с именем saveAs.php и поместить этот код в него...
Эти функции используются в stacktrace.js:
Я предлагаю вам использовать событие mousedown, которое вызывается до события click. Таким образом, браузер обрабатывает событие click естественно, что позволяет избежать каких-либо странностей код: