2010-05-08 2 views
161

У меня есть основная идея HTML. Я хочу создать ссылку для загрузки на своем веб-сайте, но у меня нет идеи о ее создании. Как создать ссылку для загрузки файла, а не посещать его?Как создать ссылку для загрузки в HTML?

+6

акцепта знак на этот вопрос должен быть включен. –

ответ

119

Этот ответ устарел. Теперь у нас есть атрибут download, как описано here.

Если по «ссылке для загрузки» вы имеете в виду ссылку на файл для загрузки, используйте

<a href="http://example.com/files/myfile.pdf" target="_blank">Download</a> 

target=_blank сделает новое окно браузера появится до начала загрузки. Это окно обычно закрывается, когда браузер обнаруживает, что ресурс является загрузкой файла.

Обратите внимание, что типы файлов, известные браузеру (например, JPG или GIF-изображения), обычно открываются в браузере.

Вы можете попробовать отправить правильные заголовки, чтобы загрузить скачивание, например, наброски, например. here. (для этого требуется сценарий на стороне сервера или доступ к настройкам сервера.)

+1

Почему бы не использовать атрибут загрузки, если вы получите файл как jpg, он будет загружен, а не просто открывается. – Ben

+2

Пожалуйста, опустите «target = '_ blank», так как это не будет работать в IE. Вы даже проверили это? – Tara

+3

@Dudeson, пожалуйста, укажите, что «не будет работать» и какие версии IE вы говорите. (Теперь можно использовать описанный ниже подход TIIUNDER ниже, но он должен получить знак accept.) –

9

Ссылка для загрузки будет ссылкой на ресурс, который вы хотите загрузить. Она построена таким же образом, что любой другой канал будет:

<a href="path to resource.name of file">Link</a> 

<a href="files/installer.exe">Link to installer</a> 
-2

Как это

<a href="www.yoursite.com/theThingYouWantToDownload">Link name</a> 

Так файл name.jpg на сайте example.com будет выглядеть следующим образом

<a href="www.example.com/name.jpg">Image</a> 
+0

Проблема с последним заключается в том, что он откроется в браузере, а не будет предлагаться для загрузки и сохранения. –

+7

Не работает; браузер будет относиться к нему как к относительной ссылке на './www.example.com/name.jpg' - вы должны использовать' http: // 'для абсолютных ссылок с указанным доменом. –

+0

@ Delan хорошо пятнистый. –

8

чтобы добавить ссылку на файл, сделать то же самое, как и любую другую ссылку на страницу:

<a href="...">link text</a> 

Чтобы заставить вещи, чтобы загрузить даже если они имеют встроенный плагин (Windows + QuickTime = тьфу), вы можете использовать это в вашем Htaccess/apache2.conf:

AddType application/octet-stream EXTENSION 
+0

Спасибо! это намного проще и является серверным!: D Я нашел эту ссылку, которая развивается немного больше. Спасибо. http://www.htaccess-guide.com/adding-mime-types/ –

+0

Это сделает все файлы этого типа только для загрузки. Хорошо, если это то, что вы хотите, но может вызвать припадки, если вы забудете и хотите, чтобы другой файл этого типа отображался в браузере вместо загрузки. – TecBrat

330

В современных браузерах, поддерживающих HTML5, следующее возможно:

<a href="link/to/your/download/file" download>Download link</a> 

вы также можете использовать это:

<a href="link/to/your/download/file" download="filename">Download link</a> 

Это позволит вам изменить имя файла, фактически загруженному.

+0

Я использовал тот же код для загрузки файла PFD, и я тестировал во всех браузерах, все это поддержка, но в сафари этот код не работает сафари, а не загружает PDF-файл в новую вкладку. –

+14

Не поддерживается в Safari & IE. http://www.w3schools.com/tags/att_a_download.asp –

+4

@SulemanMirza «современные браузеры с HTML5», поэтому все хорошо. –

18

В дополнение (или вместо) к <a download атрибуте HTML5 уже упоминалось,
браузера загрузить на диск поведение также может быть вызвано следующим заголовком ответа HTTP:

Content-Disposition: attachment; filename=ProposedFileName.txt; 

Это было способ сделать это до HTML5 (и по-прежнему работает с браузерами, поддерживающими HTML5).

+1

Но для этого требуется реализация на стороне сервера, правильно? – Lombas

+0

@ Lombas Да, только сервер может устанавливать заголовки ответов HTTP. – Myobis

+0

Это полный ответ? Вам также необходимо отправить заголовок Content Type и прочитать файл, чтобы принудительно загрузить. Я хочу ответить на этот вопрос. Полный ответ здесь: http://stackoverflow.com/a/1465631/2757916. –

4

Эта ветка, вероятно, древняя, но это работает в html5 для моего локального файла.

Для PDFs:

<p><a href="file:///........example.pdf" download target="_blank">test pdf</a></p>

Это должно открыть PDF в новые окна и позволит вам скачать его (в Firefox, по крайней мере). Для любого другого файла просто укажите его имя. Для изображений и музыки вы хотите сохранить их в том же каталоге, что и ваш сайт. Так было бы, как

<p><a href="images/logo2.png" download>test pdf</a></p> 
0

Атрибут загрузки нового для <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>

Я предпочитаю первый является предпочтительным в отношении любое расширение.

0

Атрибут загрузки не работает в IE, он полностью игнорирует «загрузку». Загрузка не работает в Firefox, если href указывает на удаленный сайт. Таким образом, пример Odin не работает в Firefox 41.0.2.

0

я знаю, что я поздно, но это то, что я получил через 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); } 
    } 

    ?> 

и загружаемую ссылку я сделал это

<a href="index.php?file=file.pdf">Download PDF</a> 
Смежные вопросы