Страница 1 из 1

Прикрепленный файл не скачивается, а открывается в браузере

Добавлено: 2019.11.10, 15:42
yura1976
На странице выводится ссылка на файл. Файлы - docx, pdf. При клике на "скачать" файл не скачивается, а открывается в виде крокозябр типа таких: "PK�LO_rels/.rels��MKA���C��l+����"Bo"�������3i���A �P��Ǽy���m���N���AêiAq0Ѻ0jx�=/"
Если обновить открывшуюся страницу с крокозябрами, то файл скачивается. Подскажите, пожалуйста, где может быть проблема.
В представлении:

Код: Выделить всё

foreach ($model->tenderfiles as $file):
                    echo Html::a(
                            Yii::t('tenders','TENDER_FILEDOWNLOAD').' <i class="glyphicon glyphicon-download-alt"></i>',
                            Url::to(['/tenders/tenders/download','fname'=> $file->filename]),
                            [
                                'class'=>"btn btn-download",
                                'target'=>"_blank"
                            ]
                    );
endforeach; ?>
В контроллере:

Код: Выделить всё

    public function actionDownload($fname) {
        $path = \Yii::getAlias('@uploads') ; ///var/www/www-root/data/www/site_name/web/uploads
        $file = $path . '/'.$fname;
        if (file_exists($file)) {
            return \Yii::$app->response->sendFile($file);
        }
        throw new \Exception('File not found');
    }


Re: Прикрепленный файл не скачивается, а открывается в браузере

Добавлено: 2019.11.10, 17:11
yiiliveext
'target'=>"_blank" - это уберите

Re: Прикрепленный файл не скачивается, а открывается в браузере

Добавлено: 2019.11.10, 17:16
yura1976
yiiliveext писал(а):
2019.11.10, 17:11
'target'=>"_blank" - это уберите
Убрал. Не помогло

Re: Прикрепленный файл не скачивается, а открывается в браузере

Добавлено: 2019.11.10, 17:19
yiiliveext
yura1976 писал(а):
2019.11.10, 17:16
yiiliveext писал(а):
2019.11.10, 17:11
'target'=>"_blank" - это уберите
Убрал. Не помогло
Смотрите какие заголовки возвращает. Проверьте также в разных браузерах.
В sendFile в опциях вручную задайте mimeType.

Re: Прикрепленный файл не скачивается, а открывается в браузере

Добавлено: 2019.11.10, 17:35
yura1976
Понял проблему. Изменил sendFile на xSendFile и все заработало.

Re: Прикрепленный файл не скачивается, а открывается в браузере

Добавлено: 2019.11.11, 11:52
unknownby
Можно попробовать вот так

Код: Выделить всё

public function actionInstruction()
    {
        $filename = 'manual.pdf'; //имя файла
        $filepath = \Yii::getAlias('@app') . "/templates/" . $filename; //путь к файлу
//если ПДФ то будет открываться в браузере, если ДОК файл, то пойдет на скачку. опция inline делает открытие в браузере.
        return \Yii::$app->response->sendFile($filepath, $filename, ['inline' => true]);
    }