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. HTTP协议(2)

    HTTP协议主要是有HTTP请求报文和HTTP响应报文组成的. HTTP请求报文主要分为四个部分: 第一部分:请求行.独占一行,由请求方法.请求url以及协议/版本组成: 第二部分:请求头,第二行到第 ...

  2. Java学习的第四十五

    1.例5.7求三个字符串中的最大值 import java.util.Scanner; public class Cjava { public static void main(String[]arg ...

  3. Java学习的第十一天

    1. 方法递归 2.this()不理解和类型传递不太理解 3.明天学习完第四章

  4. [Luogu P1119] 灾后重建 (floyd)

    题面 传送门:https://www.luogu.org/problemnew/show/P1119 Solution 这题的思想很巧妙. 首先,我们可以考虑一下最暴力的做法,对每个时刻的所有点都求一 ...

  5. 使用 Iceberg on Kubernetes 打造新一代云原生数据湖

    背景 大数据发展至今,按照 Google 2003年发布的<The Google File System>第一篇论文算起,已走过17个年头.可惜的是 Google 当时并没有开源其技术,& ...

  6. 【SpringBoot】11-1.Springboot整合Springmvc+Mybatis增删改查操作(下)

    整合过程:https://www.isdxh.com/68.html 一.增--增加用户 1.创建实体类 package com.dxh.pojo; public class Users { priv ...

  7. AES的数学基础

    有限域 有限域上的运算 加法 两个多项式进行加法运算,就是两个多项式对应系数模2相加 乘法 两个多项式进行乘法运算:两个多项式相乘 若运算结果超过7次方,则必须对此结果进行一个多项式m(x)模运算,其 ...

  8. Docker学习笔记:Alpine镜像+Python3安装+http服务器

    编写Dockerfile文件使用最新的Alpine镜像并安装Python3环境,如下: 因为python高于3.4则不会默认安装pip,需要手动安装. 试了很多其他办法都没安装上,唯有下载get-pi ...

  9. 如何用css设置鼠标属性的小手

    在元素中添加onmouseover="this.style.cursor='hand'"或者 cursor:pointer;

  10. 【转】jps 命令使用

    jps(Java Virtual Machine Process Status Tool)是JDK1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简 ...