摘要:上傳使用插件官方文檔也參考了插件參數比較多。前臺表單部分,可以參照具體例子寫就行了。
上傳使用FileInput插件
官方文檔 http://demos.krajee.com/widge...
也參考了 http://www.manks.top/yii2_mul...
插件參數比較多。前臺表單部分,可以參照具體例子寫就行了。
主要是上傳之后的處理和驗證,驗證文件的類型,大小等,我寫了一個公共方法來處理上傳
/** * 文件上傳 * ``` * $model = new UploadValidate($config_name); * $result = CommonHelper::myUpload($model, $field, "invoice"); * ``` * * @param object $model commonmodelsUploadValidate 驗證上傳文件 * @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; }
驗證的model類,參數沒有寫那么多,可以把需要的參數都加上,每個項目或者模塊需要用到上傳的時候,在配置文件params里配置上相關的參數就可以了
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 驗證規則 */ 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" => "上傳失敗", ] ];
使用步驟
//實例化上傳驗證類,傳入上傳配置參數項名稱 $model = new UploadValidate("test_upload"); //上傳 $result = CommonHelper::myUpload($model, $field, "test");
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22835.html
摘要:極致的插件機制,系統內的系統,安裝和卸載不會對原來的系統產生影響強大的功能完全滿足各階段的需求,支持用戶多端訪問后臺微信前臺等,系統中的系統。多入口模式,多入口分為后臺前端,微信,對內接口,對外接口,不同的業務,不同的設備,進入不同的入口。 RageFrame 2.0 為二次開發而生,讓開發變得更簡單 項目地址:https://github.com/jianyan74/... 前言 這...
摘要:極致的插件機制,系統內的系統,安裝和卸載不會對原來的系統產生影響強大的功能完全滿足各階段的需求,支持用戶多端訪問后臺微信前臺等,系統中的系統。多入口模式,多入口分為后臺前端,微信,對內接口,對外接口,不同的業務,不同的設備,進入不同的入口。 RageFrame 2.0 為二次開發而生,讓開發變得更簡單 項目地址:https://github.com/jianyan74/... 前言 這...
摘要:必須值驗證屬性字段名必填值提示信息說明的別名確保了特性不為空郵箱驗證說明的別名確保了特性的值是一個有效的電郵地址正則驗證字段名正則表達式提示信息字段名正則表達式提示信息正則取反說明的別名確保了特性匹配一個正則表達式網址說明的別名確保了特性是 required : 必須值驗證屬性 [[字段名],required,requiredValue=>必填值,message=>提示信息]; #說明...
摘要:而這些問題目前的最好解決方案就是集成一個編輯器,鑒于大家這里不是指程序員都是喜歡所見即所得,所以,這里我主要是演示怎么集成所見即所得的富文本編輯器。 原文來自: https://jellybool.com/post/programming-with-yii2-rich-text-input-with-redactor 首先,很慚愧的是,前幾天都出去外面玩了,沒有及時更新教程,...
閱讀 1123·2021-11-24 09:39
閱讀 3623·2021-09-02 15:21
閱讀 2161·2021-08-24 10:01
閱讀 722·2021-08-19 10:55
閱讀 2447·2019-08-30 15:55
閱讀 1212·2019-08-30 14:16
閱讀 2992·2019-08-29 15:17
閱讀 3235·2019-08-29 13:53