yii2 将上传的文件设为私有

yii2 make uploaded files private

目前在我的 Yii2 应用程序中,文件上传到 public 路径 web。但我需要将这些文件设为私有。我知道可以使用 .htaccess 来阻止直接访问文件夹,但是如果我们在浏览器中键入完整的 url 仍然可以访问它。 Yii2 中是否有任何方法可以使文件成为私有文件,以便只能通过控制器路径访问它,以便我们可以应用 Access controlRBAC 等?

你可以这样做:

在前端目录中创建上传文件夹:

root/uploads

控制器动作:

Yii2 Basic App @app: Your application root directory

Yii2 Advanced @frontend: Alias for your frontend root folder on your root app install directory

来源: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 从任何控制器访问所有文件。还要确保您在根目录中配置了 .htaccess 文件,它将所有前端请求指向 web 目录。

希望对你有帮助。