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 的图片上传类的使用,还是老样子,如果代码样 ...
随机推荐
- redis限频
做法 使用redis的lua脚本功能来限频 在redis中定时刷新系统时间来作为一个全局的时钟 限频脚本: /** * 获取令牌的lua脚本 */ public final static String ...
- 利用云主机搭建MySQL服务器
前言:有了一台云服务器之后,就想着如何物尽其用.利用其不关机(意外除外)的特性,我们可以在服务器上安装数据库服务,实现云数据库服务器,这样就可以随时随地的访问数据库了,不再受各种限制. 这里以MySQ ...
- D. Yet Another Problem On a Subsequence 解析(DP)
Codeforce 1000 D. Yet Another Problem On a Subsequence 解析(DP) 今天我們來看看CF1000D 題目連結 題目 略,請直接看原題 前言 這題提 ...
- 直接理解转置卷积(Transposed convolution)的各种情况
使用GAN生成图像必不可少的层就是上采样,其中最常用的就是转置卷积(Transposed Convolution).如果把卷积操作转换为矩阵乘法的形式,转置卷积实际上就是将其中的矩阵进行转置,从而产生 ...
- Luogu P6280 [USACO20OPEN]Exercise G
题意 定义一个长度为 \(n\) 的置换的步数为将 \(P=(1,2,\cdots,n)\) 在该置换操作下变回原样的最小次数. 求所有 \(K\) 的和,使得存在一个长度为 \(n\) 的置换使得其 ...
- LRU算法详解
一.什么是 LRU 算法 就是一种缓存淘汰策略. 计算机的缓存容量有限,如果缓存满了就要删除一些内容,给新内容腾位置.但问题是,删除哪些内容呢?我们肯定希望删掉哪些没什么用的缓存,而把有用的数据继续留 ...
- 【Luogu】P2292 [HNOI2004]L语言 题解
前置芝士:\(Trie\)字典树 这道题,说是AC自动机,实际上一个\(Trie+\)队列轻松搞定. 首先,我们对所有单词建一棵\(Trie\). 然后,定义一个空队列\(Q\),初始时把\(-1\) ...
- C++语言学习之STL 的组成
STL有三大核心部分:容器(Container).算法(Algorithms).迭代器(Iterator),容器适配器(container adaptor),函数对象(functor),除此之外还有S ...
- 面试 之 nginx,负载,动静分离
大家先看这个逻辑图 为什么我们要这样去架构我们的一个项目呢? 这样做的话,动态请求要先访问 A,A 转发访问 B,再由 B 返回结果给 A,A 最后又将结果返回给客户端这样是不是很麻烦? 最初开发的时 ...
- bert做阅读理解的一个细节
如上图所示,展示了如何用BERT来做信息抽取任务的结构图.注意一下几点即可: 1.将Question和Paragraph分别作为BERT的text1和text2输入. 2.start/end span ...

