故事:
用户应将一些私有文件上传到服务器。他应该可以访问这些文件,以便阅读(如查看图像或pdf文件)。我把它们放在web根目录中,所以没有直接链接到它们。但是在第一次请求之后,当服务器为经过身份验证的用户发布它们时,它将通过web / assets / *链接供所有其他用户使用。
的问题:
有没有办法在每次请求时清除资产?或者,是否有更好的方法仅为所有者发布私人文件?
答案 0 :(得分:3)
您可以通过PHP脚本请求该文件(抱歉,我只知道Yii1语法):
?r=resources/get&fileName=filename.png
public function actionGet() {
$fileName = Yii::app()->request->getParam('fileName');
$filePath = __DIR__.'/../../../files/'.$fileName;
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $fileName);
if (file_exists($filePath) && Yii::app()->user->canAccess($fileName)) {
header('content-type: '.$mime);
header('content-disposition: inline; filename="'.$fileName.'";');
readfile($file);
} else {
$this->redirect('site/index');
}
}