久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

Yii框架實(shí)現(xiàn)圖片上傳的方法詳解

這篇文章主要介紹了Yii框架實(shí)現(xiàn)圖片上傳的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Yii框架實(shí)現(xiàn)圖片上傳功能的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Yii框架實(shí)現(xiàn)圖片上傳的方法。分享給大家供大家參考,具體如下:

今天在網(wǎng)上看了下有關(guān)圖片上傳的教程,歷經(jīng)挫折才調(diào)試好,現(xiàn)在把相關(guān)代碼及其說明貼出來,以供初次使用的朋友們參考。

Model:

<?php
class Upload extends CActiveRecord {
  public $image;
  public static function model($className = __CLASS__) {
    return $className;
  }
  public function tableName() {
    return '{{resource}}';
  }
  public function rules() {
    return array(
      array('image', 'file', 'types'=>'jpg, gif, png')
    );
  }
}

注:resource為數(shù)據(jù)表,表前綴可在main.php內(nèi)設(shè)置,相信朋友們在看到文件上傳時應(yīng)該熟悉了main.php位置在哪及運(yùn)作機(jī)制。

Controller:

<?php
class UploadController extends Controller {
  public function actionIndex() {
    $model=new Upload;
    if(isset($_POST['Upload'])) {
      $model->image=CUploadedFile::getInstance($model,'image');
      $ext = $model->image->getExtensionName();
      $fileName = uniqid() . '.' . $ext;
      $model->image->saveAs('assets/' . $fileName);
    }
    $this->renderPartial('index', array('model'=>$model));
  }
}

注:saveAs里面是存放圖片上傳后的地址,追蹤下代碼可以發(fā)現(xiàn),該參數(shù)是move_uploaded_file函數(shù)的第二個參數(shù),一定得是文件名。

View:

<meta charset="utf-8">
<?php echo CHtml::form(SITE_URL . 'admin/upload/index','post',array('enctype'=>'multipart/form-data')); ?>
<?php echo CHtml::activeFileField($model, 'image'); ?>
<?php echo CHtml::submitButton('提交');?>
<?php echo CHtml::endForm(); ?>

注:上面的SITE_URL為項(xiàng)目定義的常量,也就是項(xiàng)目的網(wǎng)址

相信經(jīng)過上述步驟,朋友們應(yīng)該可以上傳成功圖片,而且在項(xiàng)目下的assets目錄下找到上傳的圖片。因?yàn)榘l(fā)現(xiàn)yii沒有縮略圖的方法,于是把thinkphp縮略圖的方法整合了進(jìn)來,把下面代碼保存為Image.php放在項(xiàng)目下的protected/extensions目錄下

<?php
class Image extends CController {
  /**
   +----------------------------------------------------------
   * 取得圖像信息
   *
   +----------------------------------------------------------
   * @static
   * @access public
   +----------------------------------------------------------
   * @param string $image 圖像文件名
   +----------------------------------------------------------
   * @return mixed
   +----------------------------------------------------------
   */
  static function getImageInfo($img) {
    $imageInfo = getimagesize($img);
    if ($imageInfo !== false) {
      $imageType = strtolower(substr(image_type_to_extension($imageInfo[2]), 1));
      $imageSize = filesize($img);
      $info = array(
        "width" => $imageInfo[0],
        "height" => $imageInfo[1],
        "type" => $imageType,
        "size" => $imageSize,
        "mime" => $imageInfo['mime']
      );
      return $info;
    } else {
      return false;
    }
  }
  /**
   +----------------------------------------------------------
   * 生成縮略圖
   +----------------------------------------------------------
   * @static
   * @access public
   +----------------------------------------------------------
   * @param string $image 原圖
   * @param string $type 圖像格式
   * @param string $thumbname 縮略圖文件名
   * @param string $maxWidth 寬度
   * @param string $maxHeight 高度
   * @param string $position 縮略圖保存目錄
   * @param boolean $interlace 啟用隔行掃描
   +----------------------------------------------------------
   * @return void
   +----------------------------------------------------------
   */
  static function thumb($image, $thumbname, $type='', $maxWidth=200, $maxHeight=50, $interlace=true) {
    // 獲取原圖信息
    $info = Image::getImageInfo($image);
    if ($info !== false) {
      $srcWidth = $info['width'];
      $srcHeight = $info['height'];
      $type = empty($type) ? $info['type'] : $type;
      $type = strtolower($type);
      $interlace = $interlace ? 1 : 0;
      unset($info);
      $scale = min($maxWidth / $srcWidth, $maxHeight / $srcHeight); // 計(jì)算縮放比例
      if ($scale >= 1) {
        // 超過原圖大小不再縮略
        $width = $srcWidth;
        $height = $srcHeight;
      } else {
        // 縮略圖尺寸
        $width = (int) ($srcWidth * $scale);
        $height = (int) ($srcHeight * $scale);
      }
      // 載入原圖
      $createFun = 'ImageCreateFrom' . ($type == 'jpg' ? 'jpeg' : $type);
      if(!function_exists($createFun)) {
        return false;
      }
      $srcImg = $createFun($image);
      //創(chuàng)建縮略圖
      if ($type != 'gif' && function_exists('imagecreatetruecolor'))
        $thumbImg = imagecreatetruecolor($width, $height);
      else
        $thumbImg = imagecreate($width, $height);
       //png和gif的透明處理 by luofei614
      if('png'==$type){
        imagealphablending($thumbImg, false);//取消默認(rèn)的混色模式(為解決陰影為綠色的問題)
        imagesavealpha($thumbImg,true);//設(shè)定保存完整的 alpha 通道信息(為解決陰影為綠色的問題)
      }elseif('gif'==$type){
        $trnprt_indx = imagecolortransparent($srcImg);
         if ($trnprt_indx >= 0) {
            //its transparent
            $trnprt_color = imagecolorsforindex($srcImg , $trnprt_indx);
            $trnprt_indx = imagecolorallocate($thumbImg, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);
            imagefill($thumbImg, 0, 0, $trnprt_indx);
            imagecolortransparent($thumbImg, $trnprt_indx);
       }
      }
      // 復(fù)制圖片
      if (function_exists("ImageCopyResampled"))
        imagecopyresampled($thumbImg, $srcImg, 0, 0, 0, 0, $width, $height, $srcWidth, $srcHeight);
      else
        imagecopyresized($thumbImg, $srcImg, 0, 0, 0, 0, $width, $height, $srcWidth, $srcHeight);
      // 對jpeg圖形設(shè)置隔行掃描
      if ('jpg' == $type || 'jpeg' == $type)
        imageinterlace($thumbImg, $interlace);
      // 生成圖片
      $imageFun = 'image' . ($type == 'jpg' ? 'jpeg' : $type);
      $imageFun($thumbImg, $thumbname);
      imagedestroy($thumbImg);
      imagedestroy($srcImg);
      return $thumbname;
    }
    return false;
  }
}
?>

【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請勿用于商業(yè)用途。如損害你的權(quán)益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

本篇文章主要主要介紹了yii2中使用webuploader實(shí)現(xiàn)圖片上傳的實(shí)戰(zhàn)項(xiàng)目,具有一定的參考價值,有興趣的同學(xué)可以了解一下
這篇文章主要介紹了Yii框架分頁實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了基于Yii框架實(shí)現(xiàn)分頁的原理、步驟與相關(guān)操作技巧,需要的朋友可以參考下
這篇文章主要介紹了Yii框架實(shí)現(xiàn)的驗(yàn)證碼、登錄及退出功能,結(jié)合具體實(shí)例形式分析了基于Yii框架實(shí)現(xiàn)的用戶驗(yàn)證登錄及退出操作相關(guān)步驟與操作技巧,需要的朋友可以參考下
這篇文章主要介紹了Yii框架使用魔術(shù)方法實(shí)現(xiàn)跨文件調(diào)用功能,涉及Yii框架中php面向?qū)ο蟪绦蛟O(shè)計(jì)相關(guān)操作技巧,需要的朋友可以參考下
這篇文章主要介紹了Yii框架參數(shù)化查詢中IN查詢只能查詢一個的解決方法,結(jié)合實(shí)例形式分析了Yii框架中IN查詢只能查一個的原因及FIND_IN_SET函數(shù)相關(guān)功能與使用技巧,需要的朋友可以參考下
這篇文章主要介紹了Yii框架批量插入數(shù)據(jù)擴(kuò)展類的簡單實(shí)現(xiàn)方法,涉及Yii擴(kuò)展類及數(shù)據(jù)庫相關(guān)操作技巧,需要的朋友可以參考下
主站蜘蛛池模板: 欧美一区二区三区在线免费观看 | 久久久国产一区二区 | 国产九九九九 | 日韩毛片免费看 | 九色www| 综合久久av | 亚洲区一区二 | 日韩在线 | 午夜tv免费观看 | 美女视频一区二区三区 | 欧美激情精品久久久久久变态 | 不卡在线一区 | 亚洲一区二区三区桃乃木香奈 | 精品免费国产一区二区三区四区介绍 | 黄色国产视频 | 亚洲高清三级 | 激情91| 天天噜天天干 | 福利视频大全 | 五月网婷婷 | 国产91精品在线 | 少妇精品亚洲一区二区成人 | 国产精品视频久久久 | 久久久久久久久一区 | 国产一区二区三区免费观看在线 | 色婷婷av一区二区三区软件 | 韩国电影久久 | 国产不卡在线观看 | 欧美亚洲一区二区三区 | 欧美日韩一区二区三区在线观看 | 午夜国产 | 在线免费观看黄色网址 | 成人影院在线观看 | 91久久精品国产91久久性色tv | 国产玖玖 | 欧美一区二区三区视频在线播放 | 日韩精品久久一区二区三区 | 亚欧洲精品在线视频免费观看 | 国产日韩一区二区 | 久久久久久九九九九九九 | 国产成视频在线观看 |