【问题标题】:yii2 make uploaded files privateyii2 将上传的文件设为私有
【发布时间】:2020-07-08 12:05:29
【问题描述】:

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

【问题讨论】:

    标签: yii2 private


    【解决方案1】:

    你可以这样做:

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

    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 目录。

    希望对你有帮助。

    【讨论】:

    • 我使用的是基本的 yii2 模板,如果你可以修改它会很有帮助。我有一些需要保护的私人 pdf 文档。
    • @KrishnadasPC 更新答案
    猜你喜欢
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多