摘要:上傳使用插件官方文檔也參考了插件參數(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
摘要:極致的插件機(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/... 前言 這...
摘要:極致的插件機(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/... 前言 這...
摘要:必須值驗(yàn)證屬性字段名必填值提示信息說明的別名確保了特性不為空郵箱驗(yàn)證說明的別名確保了特性的值是一個(gè)有效的電郵地址正則驗(yàn)證字段名正則表達(dá)式提示信息字段名正則表達(dá)式提示信息正則取反說明的別名確保了特性匹配一個(gè)正則表達(dá)式網(wǎng)址說明的別名確保了特性是 required : 必須值驗(yàn)證屬性 [[字段名],required,requiredValue=>必填值,message=>提示信息]; #說明...
摘要:而這些問題目前的最好解決方案就是集成一個(gè)編輯器,鑒于大家這里不是指程序員都是喜歡所見即所得,所以,這里我主要是演示怎么集成所見即所得的富文本編輯器。 原文來自: https://jellybool.com/post/programming-with-yii2-rich-text-input-with-redactor 首先,很慚愧的是,前幾天都出去外面玩了,沒有及時(shí)更新教程,...
閱讀 1164·2021-11-24 09:39
閱讀 3631·2021-09-02 15:21
閱讀 2172·2021-08-24 10:01
閱讀 733·2021-08-19 10:55
閱讀 2458·2019-08-30 15:55
閱讀 1218·2019-08-30 14:16
閱讀 3001·2019-08-29 15:17
閱讀 3242·2019-08-29 13:53