@magdalen_kub
Для отдачи файла на скачивание в Yii2 используется класс yiiwebResponse. Ниже приведен пример действия контроллера, которое отдаст файл на скачивание в браузер:
1 2 3 4 5 6 7 8 9 10 |
public function actionDownloadFile() { // путь к файлу на сервере $path = '/path/to/file.pdf'; // передаем файл в ответ if (file_exists($path)) { Yii::$app->response->sendFile($path); } } |
В этом примере мы проверяем существование файла на сервере и передаем его в ответ браузеру, используя метод sendFile. Метод sendFile самостоятельно задает заголовки ответа для скачивания файла.
Также можно установить дополнительные параметры ответа для скачивания файла, например, имя файла и тип содержимого. Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public function actionDownloadFile() { // путь к файлу на сервере $path = '/path/to/file.pdf'; // передаем файл в ответ if (file_exists($path)) { Yii::$app->response->sendFile($path, 'myfile.pdf', [ 'inline' => false, 'mimeType' => 'application/pdf', ])->send(); Yii::$app->end(); } } |
Здесь мы явно указываем имя файла (myfile.pdf) и тип содержимого (application/pdf). С помощью параметра inline мы также задаем режим скачивания файла - не встроенный (inline => false). Метод send вызывается после sendFile для того, чтобы отправить заголовки ответа до отправки файла. В конце необходимо завершить приложение Yii с помощью метода end().