【发布时间】:2020-07-08 12:05:29
【问题描述】:
目前在我的Yii2 应用程序中,文件已上传到公共路径web。但我需要将这些文件设为私有。我知道可以使用.htaccess 阻止直接文件夹访问,但如果我们在浏览器中输入完整的 url,它仍然可以访问。 Yii2 中是否有任何方法可以将文件设为私有,以便只能通过控制器路径访问它,以便我们可以应用 Access control 和 RBAC 等?
【问题讨论】:
目前在我的Yii2 应用程序中,文件已上传到公共路径web。但我需要将这些文件设为私有。我知道可以使用.htaccess 阻止直接文件夹访问,但如果我们在浏览器中输入完整的 url,它仍然可以访问。 Yii2 中是否有任何方法可以将文件设为私有,以便只能通过控制器路径访问它,以便我们可以应用 Access control 和 RBAC 等?
【问题讨论】:
你可以这样做:
在前端目录中创建上传文件夹:
root/uploads
控制器动作:
Yii2 基础应用 @app: 你的应用根目录
Yii2 高级 @frontend:您的根应用安装目录中前端根文件夹的别名
来源:Yii 2 list of path aliases available with default basic and advanced app.
//Basic App create path to folder that can contain user files
$path = \Yii::getAlias('@app/uploads/');
//set UploadedFile $object to property
$model->file = $object;
$model->upload($path);
现在我们可以存储web目录中的任何文件了;
上传模型: 保存方法:
$this->file->saveAs($path . $this->file->baseName . '.' . $this->file->extension);
之后,您可以使用相同的 $path var 从任何控制器访问 thou 文件。还要确保您在根目录中有一个已配置的.htaccess 文件,它将所有前端请求指向web 目录。
希望对你有帮助。
【讨论】: