加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

yii实现图片上传及缩略图生成的方法

发布时间:2020-12-13 02:14:51 所属栏目:PHP教程 来源:网络整理
导读:《PHP实战:yii实现图片上传及缩略图生成的方法》要点: 本文介绍了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为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读