成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

YII2文件上傳驗(yàn)證,簡(jiǎn)單封裝

BigTomato / 527人閱讀

摘要:上傳使用插件官方文檔也參考了插件參數(shù)比較多。前臺(tái)表單部分,可以參照具體例子寫就行了。

上傳使用FileInput插件
官方文檔 http://demos.krajee.com/widge...
也參考了 http://www.manks.top/yii2_mul...
插件參數(shù)比較多。前臺(tái)表單部分,可以參照具體例子寫就行了。

主要是上傳之后的處理和驗(yàn)證,驗(yàn)證文件的類型,大小等,我寫了一個(gè)公共方法來處理上傳

/**
     * 文件上傳
     * ```
     *  $model = new UploadValidate($config_name);
     *  $result = CommonHelper::myUpload($model, $field, "invoice");
     * ```
     *
     * @param  object $model commonmodelsUploadValidate 驗(yàn)證上傳文件
     * @param  string $field 上傳字段名稱
     * @param  string $path  文件保存路徑
     *
     * @return bool|array
     */
    public static function myUpload($model, $field, $path = "")
    {
        $upload_path = Yii::$app->params["upload_path"];
        $path = $path ? $path . "/" : "";
        if (Yii::$app->request->isPost) {
            $file = UploadedFile::getInstanceByName($field);
            $model->file = $file;
            //文件上傳存放的目錄
            $dir = $upload_path . $path . date("Ymd");
            if ( !is_dir($dir)) {
                mkdir($dir, 0777, true);
                chmod($dir, 0777);
            }
            if ($model->validate()) {
                //生成文件名
                $rand_name = rand(1000, 9999);
                $fileName = date("YmdHis") . $rand_name . "_" . $model->file->baseName . "." . $model->file->extension;
                $save_dir = $dir . "/" . $fileName;
                $model->file->saveAs($save_dir);
                $uploadSuccessPath = $path . date("Ymd") . "/" . $fileName;
                $result["file_name"] = $model->file->baseName;
                $result["file_path"] = $uploadSuccessPath;
            } else {
                //上傳失敗記錄日志
                self::recordLog($model->errors, $field, "Upload");
                
                return false;
            }
        } else {
            return false;
        }

驗(yàn)證的model類,參數(shù)沒有寫那么多,可以把需要的參數(shù)都加上,每個(gè)項(xiàng)目或者模塊需要用到上傳的時(shí)候,在配置文件params里配置上相關(guān)的參數(shù)就可以了

params[$config_name];
        $this->extensions = $upload_config["extensions"]??"";
        $this->mime_type = $upload_config["mime_types"]??"";
        $this->max_size = $upload_config["max_size"]??"";
        $this->min_size = $upload_config["min_size"]??"";
        $this->message = $upload_config["message"]??"";
    }
    
    /**
     * @inheritdoc 驗(yàn)證規(guī)則
     */
    public function rules()
    {
        $file_rule = [["file"], "file"];
        if ($this->extensions) {
            $file_rule["extensions"] = $this->extensions;
        }
        if ($this->mime_type) {
            $file_rule["mimeTypes"] = $this->mime_type;
        }
        if ($this->max_size) {
            $file_rule["maxSize"] = $this->max_size;
        }
        if ($this->min_size) {
            $file_rule["minSize"] = $this->min_size;
        }
        if ($this->message) {
            $file_rule["message"] = $this->message;
        }
        $rules = [$file_rule];
        
        return $rules;
    }
}

配置文件 @app/config/params.php

 [
        "extensions" => ["jpg", "png", "jpeg", "jpe", "pdf"],
        "mime_types" => ["image/*", "application/pdf"],
        "max_size" => 10 * 1024 * 1024,
        "min_size" => 1,
        "message" => "上傳失敗",
    ]
];

使用步驟

  //實(shí)例化上傳驗(yàn)證類,傳入上傳配置參數(shù)項(xiàng)名稱
  $model = new UploadValidate("test_upload");
  //上傳
  $result = CommonHelper::myUpload($model, $field, "test");

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/22835.html

相關(guān)文章

  • RageFrame 一個(gè) Yii2 + AdminLET 免費(fèi)開源多商戶通用后臺(tái)管理系統(tǒng)

    摘要:極致的插件機(jī)制,系統(tǒng)內(nèi)的系統(tǒng),安裝和卸載不會(huì)對(duì)原來的系統(tǒng)產(chǎn)生影響強(qiáng)大的功能完全滿足各階段的需求,支持用戶多端訪問后臺(tái)微信前臺(tái)等,系統(tǒng)中的系統(tǒng)。多入口模式,多入口分為后臺(tái)前端,微信,對(duì)內(nèi)接口,對(duì)外接口,不同的業(yè)務(wù),不同的設(shè)備,進(jìn)入不同的入口。 RageFrame 2.0 為二次開發(fā)而生,讓開發(fā)變得更簡(jiǎn)單 項(xiàng)目地址:https://github.com/jianyan74/... 前言 這...

    sunny5541 評(píng)論0 收藏0
  • RageFrame 一個(gè) Yii2 + AdminLET 免費(fèi)開源多商戶通用后臺(tái)管理系統(tǒng)

    摘要:極致的插件機(jī)制,系統(tǒng)內(nèi)的系統(tǒng),安裝和卸載不會(huì)對(duì)原來的系統(tǒng)產(chǎn)生影響強(qiáng)大的功能完全滿足各階段的需求,支持用戶多端訪問后臺(tái)微信前臺(tái)等,系統(tǒng)中的系統(tǒng)。多入口模式,多入口分為后臺(tái)前端,微信,對(duì)內(nèi)接口,對(duì)外接口,不同的業(yè)務(wù),不同的設(shè)備,進(jìn)入不同的入口。 RageFrame 2.0 為二次開發(fā)而生,讓開發(fā)變得更簡(jiǎn)單 項(xiàng)目地址:https://github.com/jianyan74/... 前言 這...

    Ali_ 評(píng)論0 收藏0
  • Yii2 rules常用規(guī)則

    摘要:必須值驗(yàn)證屬性字段名必填值提示信息說明的別名確保了特性不為空郵箱驗(yàn)證說明的別名確保了特性的值是一個(gè)有效的電郵地址正則驗(yàn)證字段名正則表達(dá)式提示信息字段名正則表達(dá)式提示信息正則取反說明的別名確保了特性匹配一個(gè)正則表達(dá)式網(wǎng)址說明的別名確保了特性是 required : 必須值驗(yàn)證屬性 [[字段名],required,requiredValue=>必填值,message=>提示信息]; #說明...

    Darkgel 評(píng)論0 收藏0
  • Yii2系列教程六:集成編輯器

    摘要:而這些問題目前的最好解決方案就是集成一個(gè)編輯器,鑒于大家這里不是指程序員都是喜歡所見即所得,所以,這里我主要是演示怎么集成所見即所得的富文本編輯器。 原文來自: https://jellybool.com/post/programming-with-yii2-rich-text-input-with-redactor 首先,很慚愧的是,前幾天都出去外面玩了,沒有及時(shí)更新教程,...

    xiaochao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<