У меня есть основная идея HTML. Я хочу создать ссылку для скачивания на моем примере веб-сайта, но не знаю, как ее создать. Как сделать ссылку на скачивание файла, а не посетить его?
target=_blankсделает новое окно браузера появится до начала загрузки. Это окно обычно закрывается, когда браузер обнаруживает, что ресурс загружается из файла.
Обратите внимание, что типы файлов, известные браузеру (например, изображения JPG или GIF), обычно открываются в браузере.
Вы можете попробовать отправить правильные заголовки для принудительной загрузки, как описано, например, здесь . (Для этого необходим сценарий на стороне сервера или доступ к настройкам сервера.)
почему бы не использовать атрибут загрузки, если вы получите файл, такой как JPG, он будет загружаться, а не просто открываться.
Бен
2
Пожалуйста, пропустите "target = '_ blank'", так как это не сработает в IE. Вы даже проверяли это?
Тара
4
@Dudeson, пожалуйста, укажите, что «не будет работать» и о какой версии IE вы говорите. (Теперь можно безопасно использовать подход, описанный гораздо более недавним ответом TIIUNDER ниже, однако. Он должен получить знак согласия.)
Пекка
2
@Sergiu ответ семь лет. Я не могу удалить его, и спрашивающий не ответил на мой запрос о переключении отметки принятия ... ничего мы не можем сделать, хотя я добавлю ссылку на более актуальный ответ
Pekka
1
@Dani см. Ответ TIIUNDER ниже, который является правильным сейчас.
Пекка
455
В современных браузерах, которые поддерживают HTML5, возможно следующее:
Я использовал один и тот же код для загрузки PFD-файла, и я протестировал во всех браузерах, все они поддерживаются, но в Safari этот код не работает Safari вместо загрузки PDF-файла, открытого в новой вкладке.
Как мне это сделать, если я создаю ссылку динамически по нажатию кнопки?
Nongthonbam Tonthoi
1
@NongthonbamTonthoi - вы не можете использовать javascript для динамического присвоения href тегу
akshay kishore
1
Это не обязательно будет работать, так как оно ограничено URL-адресами одного и того же происхождения.
Натан
22
В дополнение (или в качестве замены) к <a downloadуже упомянутому атрибуту HTML5 поведение
браузера при загрузке на диск также может быть инициировано следующим заголовком ответа http:
Но это требует реализации на стороне сервера, правильно?
Ломбас
@Lombas да, только сервер может установить заголовки HTTP-ответа.
Myobis
Это полный ответ? Вам также нужно отправить заголовок типа контента и прочитать файл, чтобы принудительно загрузить. Может захотеть и то, что на твой ответ. Полный ответ здесь: stackoverflow.com/a/1465631/2757916 .
Говинд Рай
это идеально подходит для реализации на стороне сервера, просто уточните также тип контента. это хорошо поддерживается по сравнению с downloadатрибутом
william.eyidi
9
Ссылка для скачивания будет ссылкой на ресурс, который вы хотите скачать. Он построен так же, как любая другая ссылка:
<ahref="path to resource.name of file">Link</a><ahref="files/installer.exe">Link to installer</a>
Чтобы сделать ссылку на файл, сделайте так же, как любую другую ссылку на страницу:
<ahref="...">link text</a>
Чтобы заставить вещи загружаться, даже если у них есть встроенный плагин (Windows + QuickTime = ugh), вы можете использовать это в вашем htaccess / apache2.conf:
Спасибо! это намного проще и для всего сервера! : D Я нашел эту ссылку, которая уточняет немного больше. Спасибо. htaccess-guide.com/adding-mime-types
Джо Д.Ф.,
Это приведет к загрузке только файлов этого типа. Хорошо, если это то, что вам нужно, но может привести к припадкам, если вы забудете и захотите, чтобы другой файл этого типа отображался в браузере вместо загрузки.
TecBrat
4
Этот поток, вероятно, является древним, но он работает в html5 для моего локального файла.
Это должно открыть PDF в новых окнах и позволит вам загрузить его (по крайней мере, в Firefox). Для любого другого файла просто укажите имя файла. Для изображений и музыки вы бы хотели сохранить их в том же каталоге, что и ваш сайт. Так было бы как
Атрибут загрузки не работает в IE, он полностью игнорирует загрузку. Загрузка не работает в Firefox, если href указывает на удаленный сайт. Так что пример Одина не работает на Firefox 41.0.2.
Есть еще одна тонкость, которая может помочь здесь.
Я хочу иметь ссылки, которые позволяют воспроизводить и отображать в браузере, а также ссылку для загрузки. Новый атрибут загрузки в порядке, но он не работает постоянно, поскольку браузер по-прежнему очень сильно хочет воспроизвести или отобразить файл.
НО ... это основано на проверке расширения имени файла URL! Вы не хотите возиться с отображением расширения сервера, потому что хотите доставить один и тот же файл двумя разными способами. Таким образом, для загрузки вы можете обмануть его, привязав файл к имени, непрозрачному для этого сопоставления расширения, указав на него, а затем используя функцию переименования загрузки, чтобы исправить имя.
Вы можете скачать по-разному, вы можете следовать моим путем. Хотя файлы могут не загружаться из-за того, что разрешение 'allow-popups' не установлено, но в вашей среде это будет работать отлично
Проблема с последним заключается в том, что он открывается в браузере, а не предлагается для скачивания и сохранения.
Пекка
9
Не сработает; браузер будет относиться к нему как к относительной ссылке ./www.example.com/name.jpg- вы должны использовать http://абсолютные ссылки для указанного домена.
Делан Азабани
-7
я знаю, что опоздал, но это то, что я получил после 1 часа поиска
<?php
$file ='file.pdf';if(! file){die('file not found');//Or do something }else{if(isset($_GET['file'])){// Set headers
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");// Read the file from disk
readfile($file);}}?>
Это ужасно. Когда я вижу такую ссылку для скачивания, мне приходится сопротивляться желанию попробовать index.php? File = index.php, который в реализации копирования / вставки вашего кода в конечном итоге предоставит злоумышленнику доступ к вашей базе данных и кто что знает.
М.Страмм
1
Плохая идея. Во-первых, потому что вы заставляете свой сервер работать больше, чем необходимо. Во-вторых, потому что пользователи могут загрузить любой файл: p
Ответы:
Если под «ссылкой для скачивания» вы подразумеваете ссылку на файл для загрузки, используйте
target=_blank
сделает новое окно браузера появится до начала загрузки. Это окно обычно закрывается, когда браузер обнаруживает, что ресурс загружается из файла.Обратите внимание, что типы файлов, известные браузеру (например, изображения JPG или GIF), обычно открываются в браузере.
Вы можете попробовать отправить правильные заголовки для принудительной загрузки, как описано, например, здесь . (Для этого необходим сценарий на стороне сервера или доступ к настройкам сервера.)
источник
В современных браузерах, которые поддерживают HTML5, возможно следующее:
Вы также можете использовать это:
Это позволит вам изменить имя фактически загружаемого файла.
источник
В дополнение (или в качестве замены) к
<a download
уже упомянутому атрибуту HTML5 поведениебраузера при загрузке на диск также может быть инициировано следующим заголовком ответа http:
Это был способ сделать до HTML5 (и до сих пор работает с браузерами, поддерживающими HTML5).
источник
download
атрибутомСсылка для скачивания будет ссылкой на ресурс, который вы хотите скачать. Он построен так же, как любая другая ссылка:
источник
Чтобы сделать ссылку на файл, сделайте так же, как любую другую ссылку на страницу:
Чтобы заставить вещи загружаться, даже если у них есть встроенный плагин (Windows + QuickTime = ugh), вы можете использовать это в вашем htaccess / apache2.conf:
источник
Этот поток, вероятно, является древним, но он работает в html5 для моего локального файла.
Для PDF-файлов:
<p><a href="file:///........example.pdf" download target="_blank">test pdf</a></p>
Это должно открыть PDF в новых окнах и позволит вам загрузить его (по крайней мере, в Firefox). Для любого другого файла просто укажите имя файла. Для изображений и музыки вы бы хотели сохранить их в том же каталоге, что и ваш сайт. Так было бы как
источник
Атрибут загрузки не работает в IE, он полностью игнорирует загрузку. Загрузка не работает в Firefox, если href указывает на удаленный сайт. Так что пример Одина не работает на Firefox 41.0.2.
источник
Есть еще одна тонкость, которая может помочь здесь.
Я хочу иметь ссылки, которые позволяют воспроизводить и отображать в браузере, а также ссылку для загрузки. Новый атрибут загрузки в порядке, но он не работает постоянно, поскольку браузер по-прежнему очень сильно хочет воспроизвести или отобразить файл.
НО ... это основано на проверке расширения имени файла URL! Вы не хотите возиться с отображением расширения сервера, потому что хотите доставить один и тот же файл двумя разными способами. Таким образом, для загрузки вы можете обмануть его, привязав файл к имени, непрозрачному для этого сопоставления расширения, указав на него, а затем используя функцию переименования загрузки, чтобы исправить имя.
Я надеялся, что просто бросить фиктивный запрос в конце или иным образом запутать расширение будет работать, но, к сожалению, это не так.
источник
Атрибут загрузки является новым для
<a>
тега в HTML5<a href="http://www.odin.com/form.pdf" download>Download Form</a>
или
<a href="http://www.odin.com/form.pdf" download="Form">Download Form</a>
Я предпочитаю первый, который предпочтительнее в отношении любого расширения.
источник
Вы можете скачать по-разному, вы можете следовать моим путем. Хотя файлы могут не загружаться из-за того, что разрешение 'allow-popups' не установлено, но в вашей среде это будет работать отлично
еще один, этот тоже не удастся из-за 'X-Frame-Options' в 'sameorigin'.
источник
Как это
Так что файл name.jpg на сайте example.com будет выглядеть так
источник
./www.example.com/name.jpg
- вы должны использоватьhttp://
абсолютные ссылки для указанного домена.я знаю, что опоздал, но это то, что я получил после 1 часа поиска
и для загрузки ссылки я сделал это
источник