yii2.0上传图片
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上传图片的更多相关文章
- yii2.0 集合七牛SDK 上传图片到第三方
首先,请用composer下载七牛phpSDK (具体参考官方文档) composer require qiniu/php-sdk 注册七牛账号 获取 AK SK(密匙) ,创建资源对象 获取doma ...
- Yii2.0 下使用 composer 安装七牛
最近在捣鼓一个网站,要上传图片,于是选择了七牛.由于Yii2.0框架本身并不具有七牛用来上传图片的接口,只能自己动手给Yii2.0框架安装七牛了. 首先在根目录下的 composer.json 进行配 ...
- Yii2.0.7 限制user module登录遇到的问题
在Yii2.0.6的时候我是在以下文件通过以下方法实现的. frontend/modules/user/Module.php namespace frontend\modules\user; clas ...
- yii2.0归档安装方法
我前几天用composer安装 一直没成功 我就用归档的方法安装了 所以这篇文字只帮助那些用归档方法安装的朋友 Yii是一个高性能的,适用于开发WEB2.0应用的PHP框架. Yii自带了丰富的功 ...
- [moka同学笔记]三、Yii2.0课程笔记(魏曦老师教程)关联字段增加搜索
关联字段增加搜索 post表关联adminuser表,通过post.author_id adminuser.id关联,在YII2.0生成搜索,关联字段搜索时,需要输入关联字段author的id才能搜 ...
- Yii2.0高级框架数据库增删改查的一些操作(转)
yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...
- yii2.0框架安装心得
yii2.0安装心得 能够搜索到这篇文章的朋友相信是对yii框架有兴趣的,但是我不得不吐槽的是,这个安装过程确实让人头疼,接下来就让大家见证一下这个纠结的过程 根据官网的说法,安装这个框架需要用到co ...
- yii2.0高级框架配置时打开init.bat秒退的解决方法 (两种方法)
第一种: 这几天刚接触到yii2.0框架,在配置advanced版本时运行init.bat初始化文件时老是闪退: 用cmd运行该文件时显示:The OpenSSL PHP extension is r ...
- yii2.0 图片上传(摘录)
文章来源:http://blog.sina.com.cn/s/blog_88a65c1b0101izmn.html 下面小伙就带领大学学习一下 Yii2.0 的图片上传类的使用,还是老样子,如果代码样 ...
随机推荐
- npm的使用说明
博主是刚开始写项目的前端小白菜,边学边整理,以供后面的小猿参考,共同进步. 首先: npm的官网地址:https://www.npmjs.com Windows 安装包(.msi) 32 位安装包下载 ...
- 【总结】docker
1 docker概述 1.1 docker简介 Docker目标是实现轻量级的操作系统虚拟化解决方案.比虚拟机更轻量级. 虚拟机可以理解成一栋楼里的一个个房间(共享花园基地等),而docker可以理解 ...
- Luogu P3262 [JLOI2015]战争调度
题意 给定一棵高度为 \(n\) 的完全二叉树,可以将节点设置成两种状态.如果某个叶子 \(x\) 的状态为 \(i\) 同时他的某个祖先也为 \(i\),那么这个叶子就会对祖先产生 \(f_{x,i ...
- Java实现评论回复功能
目录 一.分类方式 1.单一型 2.嵌套型 3.两层型 二.实现原理 1.单一型 2.嵌套型 3.两层型 使用递归循环开发评论回复功能,适用于大部分的简单单体应用 评论功能或许是大多数的单体应用之中会 ...
- (1)ASP.NET Core3.1 Ocelot介绍
1.简介 Ocelot原本设计仅为与.NET Core一起使用的,它是一个.NET API网关,作为面向使用.NET运行微型服务/面向服务的体系结构需要统一的系统入口点,即当客户端(Web站点,手机A ...
- C#编译时与运行时
曾几何时,对C#编译时与运行时的理解总是不是那么明显.以下对此部分说明一下自己的理解. 定义 编译时 将C#程序编译成中间代码的过程.其过程是对程序进行词法分析,语法分析等. 运行时 就是程序最终分配 ...
- html的height:100%;高度是多少
html的height:100%;高度是多少 html设置height:100%;表示一屏高度,类似于100vh.未设置则根据子元素的高度来自适应高.在实际应用中,设置页面高度为1屏幕高度通常设置: ...
- 分布式文档存储数据库之MongoDB备份与恢复
前文我们聊了下mongodb的访问控制以及用户创建和角色分配,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13974656.html:今天我们来了解下mong ...
- 是什么让我节省了60%的编码时间?使用MBG
MyBatis Generator简介 业务需求不断变更,数据库表结构不断修改,是我们逃不出的宿命.工欲善其事,必先利其器,是时候祭出神器了:MyBatis Generator(简称:MBG),它是一 ...
- 基于FFmpeg的Dxva2硬解码及Direct3D显示(一)
目录 前言 名词解释 代码实现逻辑 前言 关于视频软解码的资料网上比较多了,但是关于硬解可供参考的资料非常之有限,虽然总得来说软解和硬解的基本逻辑一样,但是实现细节上的差别还是比较多的.虽然目前功能已 ...

