В моем приложении есть несколько файлов PDF, которые пользователи загружают на сервер. Это личные файлы, и они не могут иметь глобальной видимости.
Я пытаюсь загрузить эти файлы в защищенный каталог (/ защищенные / загрузки, например). Пользователи должны иметь возможность просматривать эти файлы, но они должны не быть видимым в браузере клиента.
Что-то вроде «внутреннего вида» моего приложения.
Как я могу это сделать?
Если я использую каталог «assets», файлы будут видны глобально, верно?
Спасибо!
Вам необходимо отправить правильный заголовок и выполнить файл чтения, например:
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="yourPDF.pdf"');
header('Content-Length: ' . filesize($filename));
readfile($filename);
Это откроет файл в браузере, как вы просили, и не позволит пользователю получить его напрямую.
Что вам нужно, так это метод компонента запроса, sendFile
, Это кратко описано здесь: http://www.yiiframework.com/doc/api/1.1/CHttpRequest#redirect-detail
Использование будет:
Yii::app()->request->sendFile($filename, $content);
$filename
будет то, что вы хотите, чтобы пользователи загружали файл