model:

 1 use Yii;
2 public $imageUpload;
3 public function rules()
4 {
5 return [
6     [['imageUpload'], 'image', 'extensions' => 'png, jpg, jpeg', 'minWidth' => 200, 'maxWidth' => 1000, 'minHeight' => 200, 'maxHeight' => 1000, 'maxSize' => 1024 * 1024],
7   ];
8 }
9
10 public function attributeLabels()
11 {
12 return [
13     'imageUpload' => '头像',
14   ];
15 }
16 /**
17 * 获取头像url地址
18 * @return 头像的url地址
19 */
20 public function getPortraitUrl()
21 {
22 return self::getAvatarUrlById($this->id);
23 }
24
25 /**
26 * 获取头像存放路径
27 * @return 头像的存放路径
28 */
29 public static function getAvatarPathById($companyId)
30 {
31 $string = str_pad($companyId, 6, '0', STR_PAD_LEFT);
32   //头像的存放路径
33 $path = 'company/' . substr($string, 0, -4) . '/' . substr($string, -4, 2) . '/' . substr($string, -2, 2) . image_type_to_extension(IMAGETYPE_JPEG);;
34 return $path;
35 }
36
37 /**
38 * 通过用户ID获取头像url地址
39 */
40 public static function getAvatarUrlById($companyId)
41 {
42 $path = self::getAvatarPathById($companyId);
43 $file = Yii::getAlias('@uploadPath/' . $path);
44 if (file_exists($file)) {
45 $makeTime = filemtime($file);
46 return Yii::getAlias('@uploadUrl/' . $path) . '?' . $makeTime;
47 }
48 return Yii::getAlias('@resUrl/' . self::DEFAULT_AVATAR);
49 }
控制器显示:
 1 use Yii;
2 use app\models\Company;
3 use yii\helpers\FileHelper;
4 use yii\web\Controller;
5 use yii\web\UploadedFile;
6 //use yii\imageine'Image; //需要通过composer引入
7 public function actionProfile()
8 {
9 $id = Yii::$app->session['companyId'];//得到id
10 $model = Company::findOne($id);
11 $imageUpload = UploadedFile::getInstance($model, 'imageUpload');//返回一个上传文件
12 if (Yii::$app->request->isPost && $model->load(Yii::$app->request->post())) {//判断是否post提交,加载数据
13 if ($imageUpload && $model->validate(['imageUpload'])) {//数据验证
14 $path = Company::getAvatarPathById($id);//图片的路径别名
15 $avatarImage = Yii::getAlias('@uploadPath/' . $path);//将路径别名转化为实际的路径
16 FileHelper::createDirectory(dirname(Yii::getAlias($avatarImage)));//创建目录
17 $imageUpload->saveAs(Yii::getAlias($avatarImage));//保存图片
18  //   Image::thumbnail($avatarImage, 300, 300)->save($avatarImage); //将保存的图片改成300*300像素再保存到网页上
19 }
20 if($model->save()) {
21 Yii::$app->session['companyName'] = $model->name;
22 }
23 }
24 return$this->render('profile', ['model' => $model]);
25 }
视图显示:
 1 use app\models\Company;
2 <?php $form = ActiveForm::begin([ /*表单开始*/
3 'options' => ['enctype' => 'multipart/form-data'] //文件上传必须加
4 ]); ?>
5 <?= $form->field($model, 'imageUpload')->fileInput(['maxlength' => true])->hint('建议上传尺寸:100*100--300*300') ?>
6 <?= $form->field($model, 'imageUpload', ['inputTemplate'=>'<img src="'.\app\models\Company::getAvatarUrlById($model->id).'" width="100px" height="100px" />'])->staticControl() ?>
7 <div class="form-group">
8 <div class="col-sm-offset-2 col-sm-6">
9 <?= Html::submitButton('修改', ['class' => 'btn btn-green btn-sm']) ?> <!-- 显示提交按钮 -->
10 </div>
11 </div>
12 <?php ActiveForm::end(); ?> <!-- 表单结束 -->

结果显示:
网页显示

本地显示 (当前ID.jpeg)

yii2.0上传图片的更多相关文章

  1. yii2.0 集合七牛SDK 上传图片到第三方

    首先,请用composer下载七牛phpSDK (具体参考官方文档) composer require qiniu/php-sdk 注册七牛账号 获取 AK SK(密匙) ,创建资源对象 获取doma ...

  2. Yii2.0 下使用 composer 安装七牛

    最近在捣鼓一个网站,要上传图片,于是选择了七牛.由于Yii2.0框架本身并不具有七牛用来上传图片的接口,只能自己动手给Yii2.0框架安装七牛了. 首先在根目录下的 composer.json 进行配 ...

  3. Yii2.0.7 限制user module登录遇到的问题

    在Yii2.0.6的时候我是在以下文件通过以下方法实现的. frontend/modules/user/Module.php namespace frontend\modules\user; clas ...

  4. yii2.0归档安装方法

    我前几天用composer安装 一直没成功  我就用归档的方法安装了  所以这篇文字只帮助那些用归档方法安装的朋友 Yii是一个高性能的,适用于开发WEB2.0应用的PHP框架. Yii自带了丰富的功 ...

  5. [moka同学笔记]三、Yii2.0课程笔记(魏曦老师教程)关联字段增加搜索

    关联字段增加搜索 post表关联adminuser表,通过post.author_id  adminuser.id关联,在YII2.0生成搜索,关联字段搜索时,需要输入关联字段author的id才能搜 ...

  6. Yii2.0高级框架数据库增删改查的一些操作(转)

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...

  7. yii2.0框架安装心得

    yii2.0安装心得 能够搜索到这篇文章的朋友相信是对yii框架有兴趣的,但是我不得不吐槽的是,这个安装过程确实让人头疼,接下来就让大家见证一下这个纠结的过程 根据官网的说法,安装这个框架需要用到co ...

  8. yii2.0高级框架配置时打开init.bat秒退的解决方法 (两种方法)

    第一种: 这几天刚接触到yii2.0框架,在配置advanced版本时运行init.bat初始化文件时老是闪退: 用cmd运行该文件时显示:The OpenSSL PHP extension is r ...

  9. yii2.0 图片上传(摘录)

    文章来源:http://blog.sina.com.cn/s/blog_88a65c1b0101izmn.html 下面小伙就带领大学学习一下 Yii2.0 的图片上传类的使用,还是老样子,如果代码样 ...

随机推荐

  1. Zookeeper(2)---节点属性、监听和权限

    之前通过客户端连接之后我们已经知道了zk相关的很多命令(Zookeeper(1)---初识). 节点属性: 现在我们就通过stat指令来看看节点都有哪些属性,或者使用get 指令和-s参数来查看节点数 ...

  2. jvm内存查看方法----个人参考版

    查看设置JVM内存信息 1 Runtime.getRuntime().maxMemory(); //最大可用内存,对应-Xmx 2 3 Runtime.getRuntime().freeMemory( ...

  3. 20200722_Oracle添加表空间、用户,用户授权

    --创建表空间 CREATE TABLESPACE aifu --表空间名 aifu LOGGING DATAFILE 'D:\dev_config\OracleTableSpaces\aifu.DB ...

  4. 排序算法—快速排序(Quick Sort)

    快速排序(Quick Sort) 快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序. ...

  5. vgg学习

    LeNet-5是一个较简单的卷积神经网络.下图显示了其结构:输入的二维图像,先经过两次卷积层到池化层,再经过全连接层,最后使用softmax分类作为输出层. AlexNet中包含了几个比较新的技术点, ...

  6. npm的命令参数 --save-dev和 --save两者有什么区别?

    我们在安装npm包的时候经常会遇到 --save-dev 和 --save 这两个命令参数,两个命令都是往package.json文件里写入信息,两者有什么区别呢? 1. --save 会把依赖包名称 ...

  7. 1+X云计算平台运维与开发(中级)eNSP A~E卷 试题+答案

    1+X云计算平台运维与开发(中级)eNSP A~E卷 试题+答案 A卷 路由器管理(40分) 41 配置R1和R2路由器(路由器使用R2220),R1路由器配置端口g0/0/1地址为192.168.1 ...

  8. Jenkins - 部署在Tomcat容器里的Jenkins,提示“反向代理设置有误”

    提示"反向代理设置有误"的背景 将jenkins.war放在tomcat容器中运行 访问Jenkins-系统管理,会提示"反向代理设置有误" 如何解决 在tom ...

  9. 利用日志文件getshell

    一.包含日志文件漏洞利用概述           当我们没有上传点,并且也没有url_allow_include功能时,我们就可以考虑包含服务器的日志文件.        利用思路也比较简单,当我们访 ...

  10. exec系列函数详解

    execve替换进程映像(加载程序):execve系统调用,意味着代码段.数据段.堆栈段和PCB全部被替换.在UNIX中采用一种独特的方法,它将进程创建与加载一个新进程映像分离.这样的好处是有更多的余 ...