Создать временный .htm файл в PHP и отправить его пользователю? - PullRequest
0 голосов
/ 24 ноября 2011

Есть ли простой способ создать пустой временный файл .htm на сервере и отправить его пользователю для загрузки?Мне не нужно создавать файл с помощью fopen (), достаточно просто временно создать его и отправить пользователю.

Мне это нужно для аутентификации на сайте.Я обнаружил, что в PHP есть функция tmpfile (), но она пока не работает для меня.Я работаю над проектом Symfony, возможно, есть еще функция заголовка, о которой я не знаю.

Все, что мне нужно, это:

$token = '12345';
$filename = $token . '.htm';
createatmpfile($filename);
header(send .htm file as download to the user);

Не уверен, как это работает, но, возможно,Мой псевдокод выше объясняет, что я ищу ..

РЕДАКТИРОВАНИЕ:

Вот как это работает для Symfony2 (спасибо Grad):

use Symfony\Component\HttpFoundation\Response;

Метод контроллера:

public function generateAction() {
    $response = new Response();
    $response->headers->set('Content-Disposition', 'attachment; filename="'.$token.'.htm"'); 
    return $response;
}

1 Ответ

2 голосов
/ 24 ноября 2011

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

header('Content-Disposition: attachment; filename="filename.htm"');

В Symfony вы можете использовать:

$this->getResponse()->setHttpHeader('Content-Disposition', 'attachment; filename="filename.htm"');

С этим установленным заголовком вы можете либо просто запустить свой контроллер (и позволить представлению заполнить ответ), либо использовать $contents = file_get_contents($path) вместе с return $this->renderText($contents).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...