yii实现图片上传及缩略图生成的方法
发布时间:2020-12-13 02:14:51 所属栏目:PHP教程 来源:网络整理
导读:《PHP实战:yii实现图片上传及缩略图生成的方法》要点: 本文介绍了PHP实战:yii实现图片上传及缩略图生成的方法,希望对您有用。如果有疑问,可以联系我们。 PHP教程 本篇章节讲解利用yii框架来实现图片上传功能并在上传成功之后自动生成缩略图的办法,分
《PHP实战:yii实现图片上传及缩略图生成的方法》要点: PHP教程本篇章节讲解利用yii框架来实现图片上传功能并在上传成功之后自动生成缩略图的办法,分享给大家供大家参考.具体实现办法如下: PHP教程Action文件:
代码如下:
<?php
/** ?* TestController.php ?* Created on: 2014-1-26 12:59:36 by Outsider ?*/ class TestController extends CController { ? ??? /** ???? * 缩略图片生成 ???? * @ path 图片路径 ???? * @ width 图片宽度 ???? * @ height 图片高度 ???? */ ??? public function actionGetThumb($path,$w,$h) { ??????? $file_name = md5($path . $w . $h); ??????? if (file_exists('./temp/' . $file_name . '.jpg')) { ??????????? header('location:/temp/' . $file_name . '.jpg'); ??????????? Yii::app()->end(); ??????? } ??????? Yii::import("ext.EPhpThumb.EPhpThumb"); ??????? $thumb = new EPhpThumb(); ??????? $thumb->init(); ??????? $thumb->create('.' . $path) ??????????????? ->adaptiveResize($w,$h) ??????????????? ->save('./temp/' . $file_name . '.jpg') ??????????????? ->show(); ??? } ? ??? /* ???? * 图片显示 ???? */ ? ??? public function actionList() { ??????? $attache = Attache::model(); ??????? $list = $attache->findAll(); ??????? $this->render('list',array('list' => $list)); ??????? die; ??? } ? ??? /** ???? * 文件上传 ???? */ ??? public function actionIndex() { ??????? $path = getcwd() . 'uploads'; ??????? $dir = DIRECTORY_SEPARATOR . date('Y') . DIRECTORY_SEPARATOR . date('m'); ??????? $dir = str_replace("","/",$dir); ??????? $uploads_dir = str_replace("",$path . $dir); ??????? if (!is_dir($uploads_dir) || !is_writeable($uploads_dir)) { ??????????? mkdir($uploads_dir,0777,TRUE); ??????????? touch($uploads_dir . '/index.html'); ??????? } ??????? $uploaded = false; ??????? $model = new Upload(); ??????? if (isset($_POST['Upload'])) { ??????????? $model->attributes = $_POST['Upload']; ??????????? $file = CUploadedFile::getInstance($model,'file'); ??????????? $newName = substr(md5($file->extensionName . round((microtime(true) * 1000))),17) . '.' . $file->extensionName;? ??????????? $file_name = $uploads_dir . '/' . $newName; ??????????? if ($model->validate()) { ??????????????? $attache = new Attache(); ??????????????? $uploaded = $file->saveAs($file_name,TRUE); ??????????????? $attache->name = $file->getName(); ??????????????? $attache->path = $dir . '/' . $newName; ??????????????? $attache->create_time = time(); ??????????????? $attache->save(); ??????????? } ??????? } ? ??????? $this->render('index',array( ??????????? 'model' => $model, ??????????? 'uploaded' => $uploaded, ??????????? 'dir' => $uploads_dir, ??????? )); ??? } } PHP教程Upload.php:
代码如下:
<?php
class Upload extends CFormModel { ? ??? public $file; ? ??? public function rules() { ??????? return array( ??????????? array('file','file','types' => 'jpg,gif,png,zip'), ??????? ); ??? } } 图片显示页面: PHP教程自定义图片大小,缩略图自动生成
代码如下:
<?php
/** ?* list.php ?* Created on: 2014-1-26 13:12:01 by Outsider ?*/ ?> <?php foreach ($list as $v): ?> ??? <img src="<?php echo Yii::app()->createUrl('test/getThumb',array('path' => '/uploads' . $v['path'],'w' => '150','h' => '150')) ?>"> <?php endforeach; ?> PHP教程图片上传表单:
代码如下:
<?php if($uploaded):?>
<p>File was uploaded. Check <?php echo $dir?>.</p> <?php endif ?> <?php echo CHtml::beginForm('','post',array ??????? ('enctype'=>'multipart/form-data'))?> ??? <?php echo CHtml::error($model,'file')?> ??? <?php echo CHtml::activeFileField($model,'file')?> ??? <?php echo CHtml::submitButton('Upload')?> <?php echo CHtml::endForm()?> PHP教程希望本文所述对大家基于Yii框架的PHP程序设计有所赞助. 《PHP实战:yii实现图片上传及缩略图生成的方法》是否对您有启发,欢迎查看更多与《PHP实战:yii实现图片上传及缩略图生成的方法》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |