2009-12-10 4 views
1

Есть ли способ заставить «браузер» загружать файл, а не открывать его?Javascript JQuery ссылка на файл txt

<a href="file.txt">Download this file</a> 

Я попробовал метод с помощью JS с помощью window.open ("file.txt", "Download");

но без успеха.

Thx.

Обновление:

Я сделал PHP-файл как последуйте;

<html> 
<a href='dl.php?bid=3'> 

<php> 
$sql="select barquivo from bibilioteca where bid=$_GET[bid]"; 
$row=mysql_fetch_assoc(mysql_query($sql)); 
header("Content-Disposition: attachment;filename=biblioteca/$row[barquivo]"); 

И загрузить файл "biblioteca_" с 0 байтами.

+0

лучший ответ на эту ссылку http://stackoverflow.com/questions/1597732/php-force-file-download-and-ie-yet-again/1597946#1597946 –

ответ

4

Вы должны сделать это на стороне сервера.

Если вы отправляете

Content-type: application/octet 

или

Content-disposition: attachment; filename=file.txt 

заголовок, то пользователю будет предложено загрузить.

+1

'октет-поток', обычно. Однако просто «октет» будет работать слишком просто из-за неизвестного типа. – bobince

1

Невозможно сделать в чистом Javascript, насколько я знаю. Вы должны отправить соответствующую серверную часть заголовков.

Если вы можете использовать настройки Apache'а .htaccess (намного проще) или PHP (более сложные, потому что вам придется анализировать файлы txt через PHP или вводить скрипт PHP для передачи файлов), вы можете обратиться к принятый ответ here.

2

Не на уровне javascript. Вы можете иметь большой контроль над тем, что попытается сделать пользовательский агент (браузер), изменив тип Mime содержимого, который может быть выполнен с веб-сервера или на стороне сервера.

Это означает, что ваш файл ".txt" отправляется в браузер с заголовком HTTP в

Content-Type: text/plain 

. Если вместо этого он служил:

Content-Type: application/octect-stream 

заголовок HTTP вместо этого, скорее всего, пользователю будет предложено сохранить файл (независимо от имени файла или расширения)

Смежные вопросы