@kurt
В Yii2 есть несколько способов отдать файл на скачивание, но наиболее распространенным является использование встроенного метода sendFile()
в контроллере.
Для использования этого метода, вы должны сначала создать экземпляр класса yiiwebResponse
и установить в него необходимые заголовки. Например, вы можете установить заголовок Content-Disposition
, чтобы указать имя файла, которое будет использоваться при скачивании.
Затем вызовите метод sendFile()
с параметрами пути к файлу и его имени, чтобы отправить файл клиенту для скачивания.
Пример:
1 2 3 4 5 6 7 |
public function actionDownload() { $file = '/path/to/file.pdf'; $filename = 'file.pdf'; $response = Yii::$app->response; $response->sendFile($file, $filename)->send(); } |
В этом примере файл file.pdf
будет отправлен клиенту для скачивания, и его имя будет использоваться в качестве имени файла при скачивании.
@kurt
Также вы можете добавить дополнительные опции для настройки поведения скачивания файла.
1 2 3 4 5 6 7 8 9 10 11
public function actionDownload() { $file = '/path/to/file.pdf'; $filename = 'file.pdf'; $options = [ 'mimeType' => 'application/pdf', 'inline' => false, ]; $response = Yii::$app->response; $response->sendFile($file, $filename, $options)->send(); }
В этом примере мы указали, что MIME-тип файла является "application/pdf" и что файл не должен быть открыт непосредственно в браузере (inline = false). Вы можете использовать другие параметры, чтобы настроить поведение скачивания файла в соответствии с вашими потребностями.
Кроме метода sendFile(), вы также можете использовать метод sendContentAsFile(), чтобы отправить содержимое файла, который вы динамически генерируете, для скачивания. Этот метод принимает содержимое файла в виде строки и предоставляет аналогичные опции для настройки скачивания файла.