本文讲述了yii2高级应用之自定义组件实现全局使用图片上传功能的方法。分享给大家供大家参考,具体如下:
此例为yii2高组应用,这里只提供一个简单的事例
在yii2中,在使用到上传图片时有自带的一个上传图片类,但不太好用。
其中有一种方式,把自己写的一个上传图片类文件,注册成一个组件,在全局中使用。(我记得我在里面有写过一篇小物件的使用)
这里,我只作一个简单的自定义组件介绍
1、在backend(或frontend)定义一个 upload.php(注意路径: backend/components)
//图片上传处理类(这里略) //upload.php事例代码 namespace backend\components; class Upload { public function test(){ $a = '你好'; return $a; } }
2、backend/config/main.php 注册刚写的自定义组件
'components' => [ 'imgload' => [ 'class' => 'backend\components\Upload' ], ]
3、控制器中如何使用
public function actionArticlelist() { $cc = Yii::$app->imgload->test(); var_dump($cc);exit; }
那么,一个完整的图片上传组件这里就不写了。
这里只写了一个使用自定义组件的方法!
还是补进进来吧。
1、自定义组件,便于全局使用。backend/config/main.php
'components' => [ 'user' => [ 'identityClass' => 'common\models\AgMerch', 'enableAutoLogin' => true, ], //自定义图片上传类 'imgload' => [ 'class' => 'agent\components\Upload' ], ]
2、自定义图片上传类 backend/components/Upload.php
namespace agent\components; use yii; use yii\base\Object; use yii\web\UploadedFile; class Upload extends Object { /** * [UploadPhoto description] * @param [type] $model [实例化模型] * @param [type] $path [图片存储路径] * @param [type] $originName [图片源名称] * @param boolean $isthumb [是否要缩略图] */ public function UploadPhoto($model,$path,$originName,$isthumb=false){ $root = $_SERVER['DOCUMENT_ROOT'].'/'.$path; //返回一个实例化对象 $files = UploadedFile::getInstance($model,$originName); $folder = date('Ymd')."/"; $pre = rand(999,9999).time(); if($files && ($files->type == "image/jpeg" || $files->type == "image/pjpeg" || $files->type == "image/png" || $files->type == "image/x-png" || $files->type == "image/gif")) { $newName = $pre.'.'.$files->getExtension(); }else{ die($files->type); } if($files->size > 2000000){ die("上传的文件太大"); } if(!is_dir($root.$folder)) { if(!mkdir($root.$folder, 0777, true)){ die('创建目录失败...'); }else{ // chmod($root.$folder,0777); } } //echo $root.$folder.$newName;exit; if($files->saveAs($root.$folder.$newName)) { if($isthumb){ $this->thumbphoto($files,$path.$folder.$newName,$path.$folder.'thumb'.$newName); return $path.$folder.$newName.'#'.$path.$folder.'thumb'.$newName; }else{ return $path.$folder.$newName; } } } }
3、控制器部分
use backend\components\Upload; public function actionArtadd(){ $model = new Article(); if ($model->load(Yii::$app->request->post())) { //cover为表中的字段名 $img = Yii::$app->imgload->UploadPhoto($model,'uploads/article/','cover'); $model->cover = $img;//存入表中 if($model->save()){ Yii::$app->getSession()->setFlash('info', '添加成功!'); return $this->redirect(['xxx']); }else{ Yii::$app->getSession()->setFlash('info', '添加失败!'); @unlink($img); return $this->redirect(['xxx']); } } //代码略 }
4、视图 (部分代码)
<"_blank" href="https://www.jb51.net/Special/386.htm">Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月16日
2024年11月16日
- 魔兽世界wlk恶魔术士一键输出宏是什么 wlk恶魔术士一键输出宏介绍
- 医学爱好者狂喜:UP主把医学史做成了格斗游戏!
- PS5 Pro评分解禁!准备升级入手吗?
- 我们盘点了近期火热的国产单机游戏!《琉隐神渡》等 你期待哪款?
- 2019年第12届广州影音展双碟纪念版ADMS2CD[MP3/WAV]
- 黄安《救姻缘》台首版[WAV+CUE]
- 模拟之声慢刻CD《柏林之声4》[正版CD低速原抓WAV+CUE]
- 李宗盛 《李宗盛经典金曲》[WAV+CUE][1G]
- 周华健《粤语精选》[WAV+CUE][1G]
- 蔡婧2024《天空》HQCDII头版限量编号[WAV+CUE][1G]
- 陈奂仁.2011-谁是陈奂仁【BBS】【FLAC分轨】
- 群星.2024-幻乐森林影视原声带【韶愔音乐】【FLAC分轨】
- 黎明.1999-向往金色的黎明新歌+精选2CD【环球】【WAV+CUE】
- 发烧女声Méav《美芙的祈祷》发烧女声 [WAV+CUE][820M]
- 雷婷 《我的爱回不来》紫银合金AQCD [WAV+CUE][1G]