yii2 将上传的文件设为私有
yii2 make uploaded files private
目前在我的 Yii2
应用程序中,文件上传到 public 路径 web
。但我需要将这些文件设为私有。我知道可以使用 .htaccess
来阻止直接访问文件夹,但是如果我们在浏览器中键入完整的 url 仍然可以访问它。 Yii2
中是否有任何方法可以使文件成为私有文件,以便只能通过控制器路径访问它,以便我们可以应用 Access control
和 RBAC
等?
你可以这样做:
在前端目录中创建上传文件夹:
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
目录。
希望对你有帮助。
目前在我的 Yii2
应用程序中,文件上传到 public 路径 web
。但我需要将这些文件设为私有。我知道可以使用 .htaccess
来阻止直接访问文件夹,但是如果我们在浏览器中键入完整的 url 仍然可以访问它。 Yii2
中是否有任何方法可以使文件成为私有文件,以便只能通过控制器路径访问它,以便我们可以应用 Access control
和 RBAC
等?
你可以这样做:
在前端目录中创建上传文件夹:
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
目录。
希望对你有帮助。