当前位置: 首页 > 后端技术 > PHP

YII2文件上传验证,简单封装

时间:2023-03-29 20:59:44 PHP

上传使用FileInput插件官方文档http://demos.krajee.com/widge...也可参考http://www.manks.top/yii2_mul...插件-in参数比较多。前台表单部分可以参考具体的例子写。主要是上传后的处理和校验,校验文件的类型和大小等。*$result=CommonHelper::myUpload($model,$field,'invoice');*```**@paramobject$model\common\models\UploadValidate验证上传文件*@paramstring$field上传字段名*@paramstring$path文件保存路径**@returnbool|array*/publicstaticfunctionmyUpload($model,$field,$path=''){$upload_path=\Yii::$app->params['upload_path'];$路径=$路径?$路径。“/”:'';如果(\Yii::$app->request->isPost){$file=UploadedFile::getInstanceByName($field);$模型->文件=$文件;//文件上传存放目录$dir=$upload_path.$路径。日期(“年月日”);如果(!is_dir($dir)){mkdir($dir,0777,true);chmod($目录,0777);}if($model->validate()){//生成文件名$rand_name=rand(1000,9999);$文件名=日期(“YmdHis”)。$rand_name。'_'。$模型->文件->基础名称。“。”.$模型->文件->扩展;$保存目录=$目录。“/”。$文件名;$model->file->saveAs($save_dir);$uploadSuccessPath=$路径。日期(“Ymd”)。“/”。$文件名;$result['file_name']=$model->file->baseName;$result['file_path']=$uploadSuccessPath;}else{//上传失败记录日志self::recordLog($model->errors,$field,'Upload');返回假;}}else{返回假;}验证过的模型类,没有那么多参数要写,需要的参数都加进去即可,每个项目或模块需要上传时,在配置文件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验证规则*/publicfunctionrules(){$file_rule=[['file'],'file'];如果($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];返回$规则;}}配置文件@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=newUploadValidate('test_upload');//上传$result=CommonHelper::myUpload($model,$field,'test');