Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

Отправка файлов в yii 2

Отправка файлов

Как и перенаправление браузера, отправка файлов является ещё одной возможностью, основанной на определённых HTTP-заголовках. Yii предоставляет набор методов для решения различных задач по отправке файлов. Все они поддерживают HTTP-заголовок range.

  • [[yii\web\Response::sendFile()]]: отправляет клиенту существующий файл.
  • [[yii\web\Response::sendContentAsFile()]]: отправляет клиенту строку как файл.
  • [[yii\web\Response::sendStreamAsFile()]]: отправляет клиенту существующий файловый поток как файл.


Эти методы имеют одинаковую сигнатуру и возвращают объект ответа. Если отправляемый файл очень велик, следует использовать [[yii\web\Response::sendStreamAsFile()]], так как он более эффективно использует оперативную память. Следующий пример показывает, как отправить файл в действии контроллера:

public function actionDownload()
{
    return \Yii::$app->response->sendFile('path/to/file.txt');
}

При вызове метода отправки файла вне методов действий чтобы быть уверенным, что к ответу не будет добавлено никакое нежелательное содержимое, следует вызвать сразу после него [[yii\web\Response::send()]].

\Yii::$app->response->sendFile('path/to/file.txt')->send();

Некоторые Web-серверы поддерживают особый режим отправки файлов, который называется X-Sendfile. Идея в том, чтобы перенаправить запрос файла Web-серверу, который отдаст файл пользователю самостоятельно. В результате Web-приложение может завершиться раньше, пока Web-сервер ещё пересылает файл. Чтобы использовать эту возможность, воспользуйтесь методом [[yii\web\Response::xSendFile()]]. Далее приведены ссылки на то, как включить X-Sendfile для популярных Web-серверов:

Заберите ссылку на статью к себе, чтобы потом легко её найти ;)

Выберите, то, чем пользуетесь чаще всего:

Спасибо за внимание, оставайтесь на связи! Ниже ссылка на форум и обсуждение ; )


Обсудить эту статью

INFO: Вы отправляете сообщение как 'Гость'