yii图片上传
http://wuhai.blog.51cto.com/2023916/953300
首先感谢这里的博主,提供了思路,不过在调用 $model->b_image->extensionName 这个时,总提示错误,调呀调的,调烦了,就自己写一个吧。
其他不多说,看步骤
一、下载yii官方提供的图片处理扩展 http://www.yiiframework.com/extension/image 具体配置跟官方的一样,这个扩展提供了两套调用方式,我选择了第一种,就是在配置文件里进行添加组件的方式,来张图,有图有真象哈

二、在protected目录下新建一utils目录,在目录下新建Upload.php文件,代码如下
<?php
/**
* @desc 对后台上传的图片进行简单处理
* @author Debm!
* @param $name 原图片名称
* @param $type 判断mime值
* @param $tmp_name 临时位置,转换目录使用
* @param $width 新图宽
* @param $height 新图高
* @return string path 存放路径
*/
class Upload
{
public static function createImageLink($name, $type, $tmp_name, $width, $height){
$imageMime = array(
'image/gif',
'image/jpeg',
'image/bmp',
//需要时添加...
);
if(!in_array($type, $imageMime)){
return false;
}else{
//获取图片后缀
$imageExt = end(explode('.', $name));
//以当前时间命名此图片,避免重复
$name = time().uniqid().'.'.$imageExt;
//创建存放路径
$path = Yii::app()->request->baseUrl.'images/uploads/'.$name;
//图片处理
$image = Yii::app()->image->load($tmp_name);
$image->resize($width, $height)->rotate(0)->quality(100)->sharpen(20);
$image->save($path);
// move_uploaded_file($tmp_name,$path);
return $path;
}
}
}
三、在 protected/config/main.php 这个文件里,把刚才的utils目录载入
'import'=>array(
'application.models.*',
'application.components.*',
'application.extensions.*',
'application.helpers.*',
'application.utils.*',
'application.modules.boss.modules.srbac.controllers.SBaseController',
),
四、写代码
model部分
添加图片验证规则,其他规则根据自己需要进行添加,这里我只添加需要展示的代码(views和controller一样,不再说明了)
public function rules()
{
return array(
array('b_image', 'file', 'types' => 'jpg,gif,png', 'on' => 'insert'),
);
}
views
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'iot-books-form',
// Please note: When you enable ajax validation, make sure the corresponding
// controller action is handling ajax validation correctly.
// There is a call to performAjaxValidation() commented in generated controller code.
// See class documentation of CActiveForm for details on this.
'enableAjaxValidation'=>false,
'htmlOptions'=>array('enctype'=>'multipart/form-data'),//这个一定要加,否则获取不到图片
)); ?>
<div class="row">
<?php echo $form->labelEx($model,'b_image'); ?>
<?php
if(!$model->isNewRecord){
?>
<img src="<?php echo Yii::app()->request->baseUrl.'/'.$model->b_image; ?>">
<?php
}
?>
<?php echo CHtml::activeFileField($model,'b_image',array('size'=>60,'maxlength'=>255)); ?>
<?php echo $form->error($model,'b_image'); ?>
</div>
controller
/**
* Creates a new model.
* If creation is successful, the browser will be redirected to the 'view' page.
*/
public function actionCreate()
{
$model=new IotBooks; // Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model); if(isset($_POST['IotBooks']))
{
$imgUrl = '';
if($_FILES){
$name = $_FILES['IotBooks']['name']['b_image']; //上传图片原名
$type = $_FILES['IotBooks']['type']['b_image']; //上传图片mime类型
$tmp_name = $_FILES['IotBooks']['tmp_name']['b_image']; //上传图片临时存放位置
$width = 100; //缩略图宽
$height = 100; //缩略图高
$imgUrl = Upload::createImageLink($name, $type, $tmp_name, $width, $height);
}
$model->attributes = $_POST['IotBooks'];
$model->b_image = $imgUrl;
if($model->save())
$this->redirect(array('view','id'=>$model->bid));
}
$this->render('create',array(
'model'=>$model,
));
} /**
* Updates a particular model.
* If update is successful, the browser will be redirected to the 'view' page.
* @param integer $id the ID of the model to be updated
*/
public function actionUpdate($id)
{
$model=$this->loadModel($id); // Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model); if(isset($_POST['IotBooks']))
{
$imgUrl = $model->b_image;
if($_FILES && ($_FILES['IotBooks']['name']['b_image'] != '')){
$name = $_FILES['IotBooks']['name']['b_image']; //上传图片原名
$type = $_FILES['IotBooks']['type']['b_image']; //上传图片mime类型
$tmp_name = $_FILES['IotBooks']['tmp_name']['b_image']; //上传图片临时存放位置
$width = 100; //缩略图宽
$height = 100; //缩略图高
$imgUrl = Upload::createImageLink($name, $type, $tmp_name, $width,$height);
}
$model->attributes = $_POST['IotBooks'];
$model->b_image = $imgUrl;
if($model->save())
$this->redirect(array('view','id'=>$model->bid));
} $this->render('update',array(
'model'=>$model,
));
}
完工了,试一下吧
yii图片上传的更多相关文章
- yii2解决百度编辑器umeditor图片上传问题
作者:白狼 出处:http://www.manks.top/article/yii2_umeditor_upload本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原 ...
- yii php 图片上传与生成缩略图
今天需要做图片上传与生成缩略图的功能,把代码进行记录如下: html 视图 ($pic_action_url = $this->createAbsoluteUrl('h ...
- yii2.0 图片上传(摘录)
文章来源:http://blog.sina.com.cn/s/blog_88a65c1b0101izmn.html 下面小伙就带领大学学习一下 Yii2.0 的图片上传类的使用,还是老样子,如果代码样 ...
- uploadPreview 兼容多浏览器图片上传及预览插件使用
uploadPreview兼容多浏览器图片上传及预览插件 http://www.jq22.com/jquery-info2757 Html 代码 <div class="form-gr ...
- Asp.Net Mvc 使用WebUploader 多图片上传
来博客园有一个月了,哈哈.在这里学到了很多东西.今天也来试着分享一下学到的东西.希望能和大家做朋友共同进步. 最近由于项目需要上传多张图片,对于我这只菜鸟来说,以前上传图片都是直接拖得控件啊,而且还是 ...
- 06.LoT.UI 前后台通用框架分解系列之——浮夸的图片上传
LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...
- JS图片上传预览插件制作(兼容到IE6)
其实,图片预览功能非常地常见.很意外,之前遇到上传图片的时候都不需要预览,也一直没有去实现过.现在手上的项目又需要有图片预览功能,所以就动手做了一个小插件.在此分享一下思路. 一.实现图片预览的一些方 ...
- HTML5笔记:跨域通讯、多线程、本地存储和多图片上传技术
最近做项目在前端我使用了很多新技术,这些技术有bootstrap.angularjs,不过最让我兴奋的还是使用了HTML5的技术,今天我想总结一些HTML5的技术,好记性不如烂笔头,写写文章可以很好的 ...
- 对百度的UEditor多图片上传的一些补充
我已经写了一篇文章关于百度的UEditor提取多图片上传模块.如果还没有看过,请点击以下链接查看 http://www.cnblogs.com/luke1006/p/3719029.html 出差了两 ...
随机推荐
- [技术翻译]Guava-libraries(一): 用户指导
用户指导 本文翻译自http://code.google.com/p/guava-libraries/wiki/GuavaExplained,由十八子将翻译,发表于博客园 http://www.cnb ...
- bc命令详解与实例
bc: bc 是一种高精度的可交互执行的计算机语言.它在一些浮点数的运算中应用广泛. 一般情况下我们直接输入 bc ,便可进入其工作环境.当然,它还有其他的参数 -h 显示帮助信息并退出 -i 强制进 ...
- Win7-IIS7下运行PHP网站(以配置好的drupal网站为例)
0.前提:IIS7已启用. drupal网站配置文件web.config中用到了“简洁链接”(URL重写),所以,还需要事先安装URL重写模块. URL重写模块(url rewrite)下载地址: r ...
- python学习第十七天 --定制类
何为定制类? Python的class允许定义许多特殊方法,可以让我们非常方便地生成特定的类.在类中应用或者重写python的特殊方法,得到的类,就是定制类. 大家都知道print的用法.见下面例子 ...
- WEB兼容性之JS
1. 获取iframe的window对象 //三种方法 window.iframeName window.frames[iframeName] document.getElementById(ifra ...
- iPhone 被同步到 Mac上后 如果不希望更新到Mac上在哪里删除?
前往文件夹 /Users/用户名/Library/Application Support/MobileSync 直接删除 就行了(同时要倾倒废纸篓). 目前iPhone链接Mac 后 不让 ...
- 『Python』 ThreadPool 线程池模板
Python 的 简单多线程实现 用 dummy 模块 一句话就可以搞定,但需要对线程,队列做进一步的操作,最好自己写个线程池类来实现. Code: # coding:utf-8 # version: ...
- centos7 jsoup java.net.UnknownHostException
[root@localhost ~]# vi /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.loc ...
- Qt:截图工具,任意大小矩形截图、全屏截图
http://blog.csdn.net/rl529014/article/details/53146440
- 【转】no resource found @integer/google_play_services_version whats this?
原文网址:http://stackoverflow.com/questions/24325333/no-resource-found-integer-google-play-services-vers ...