2009-10-10 3 views
0

У меня есть диалоговое окно, открывающее, когда пользователь нажимает на URL-адрес. В этом диалоговом окне у меня есть две кнопки: «ОК» (которая закрывает диалоговое окно) и «скачать файл» (что я хотел бы, чтобы файл, который я только что создал через PHP, был загружен при нажатии). Как я могу достичь этой функциональности с помощью кнопки «Загрузить файл»?Загрузить файл, когда пользователь нажимает кнопку диалога

Я пробовал $ .get, но это только извлекает данные файла и не запрашивает у пользователя загрузку файла.

Спасибо.

ответ

1

Внутри обработчика щелчка по этой кнопке:

window.location.href = "path/to/file/on/server.txt"; 

Кстати, вы на самом деле не выписывать файл в этом случае. Вы можете использовать переписывание URL, чтобы сделать это «виртуальным файлом», который запускает ваш PHP-код, чтобы выпустить данные файла при доступе. Вы меняете PHP, чтобы возвращать сгенерированные данные файла напрямую, а не записывать его в файл.

EDIT: Виртуальное файлов в Apache:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase /vfiles 
    RewriteRule ~vfiles/([a-z]+)\.txt vfile-handler.php?id=$1 [L,QSA] 
</IfModule> 

Это говорит, что http://my.server/vfiles/foo.txt получает перенаправляется внутри сервера Apache для запуска vfile-handler.php вместо этого, передавая его "ID = Foo" в качестве запроса строка, с которой вы имеете дело так же, как и любой другой запрос GET с строкой запроса. Ваш PHP-скрипт затем соответствующим образом устанавливает тип MIME (text/plain в этом случае, так как мы утверждаем, что он является .txt-файлом) и строит ответ так же, как если бы мы строили HTML-страницу на лету.

+0

это сработало отлично! можете ли вы объяснить больше о том, что вы имеете в виду об использовании перезаписи URL для создания «виртуального файла»? – acedanger

+0

ответил в правиле выше –

+0

, он означает, что вы использовали бы что-то вроде 'window.location.href =" path/to/php/on/server.php? File = true "' или что-то подобное, и на вашем php вы бы верните файл, если переменная запроса 'file' истинна (или некоторый идентификатор, в зависимости от того, что вам нужно). – Blindy