当前位置:首页 > PHP教程 > php类库 > 列表

详解php版阿里云OSS图片上传类

发布:smiling 来源: PHP粉丝网  添加日期:2022-07-26 12:15:41 浏览: 评论:0 

本文实例讲述了php版阿里云OSS图片上传类。分享给大家供大家参考,具体如下:

1.阿里云基本函数

  1. /** 
  2.  
  3.  * 把本地变量的内容到文件 
  4.  
  5.  * 简单上传,上传指定变量的内存值作为object的内容 
  6.  
  7.  */ 
  8.  
  9. public function putObject($imgPath,$object
  10.  
  11.  
  12.   $content = file_get_contents($imgPath); // 把当前文件的内容获取到传入文件中 
  13.  
  14.   $options = array(); 
  15.  
  16.   try { 
  17.  
  18.     $this->ossClient->putObject($this->bucket, $object$content$options); 
  19.  
  20.   } catch (OssException $e) { 
  21.  
  22.     return $e->getMessage(); 
  23.  
  24.   } 
  25.  
  26.   return TRUE; 
  27.  
  28.  
  29. /** 
  30.  
  31.  * 上传指定的本地文件内容 
  32.  
  33.  */ 
  34.  
  35. public function uploadFile($imgPath,$object//$_FILES['img']['tmp_name'] 
  36.  
  37.  
  38.   $filePath = $imgPath
  39.  
  40.   $options = array(); 
  41.  
  42.   try { 
  43.  
  44.     $this->ossClient->uploadFile($this->bucket, $object$filePath$options); 
  45.  
  46.   } catch (OssException $e) { 
  47.  
  48.     return $e->getMessage(); 
  49.  
  50.   } 
  51.  
  52.   return TRUE; 
  53.  
  54.  
  55. // 删除对象 
  56.  
  57. public function deleteObject($object) { 
  58.  
  59.   try { 
  60.  
  61.     $this->ossClient->deleteObject($this->bucket, $object); 
  62.  
  63.   } catch (OssException $e) { 
  64.  
  65.     return $e->getMessage(); 
  66.  
  67.   } 
  68.  
  69.   return TRUE; 
  70.  
  71.  
  72. // 判断对象是否存在 
  73.  
  74. public function doesObjectExist($object) { 
  75.  
  76.   try { 
  77.  
  78.     $result = $this->ossClient->doesObjectExist($this->bucket, $object); 
  79.  
  80.   } catch (OssException $e) { 
  81.  
  82.     return $e->getMessage(); 
  83.  
  84.   } 
  85.  
  86.   return $result
  87.  
  88.  
  89. // 批量删除对象 
  90.  
  91. public function deleteObjects($objects) { 
  92.  
  93.   try { 
  94.  
  95.     $this->ossClient->deleteObjects($this->bucket, $objects); 
  96.  
  97.   } catch (OssException $e) { 
  98.  
  99.     return $e->getMessage(); 
  100.  
  101.   } 
  102.  
  103.   return TRUE; 
  104.  
  105.  
  106. /** 
  107.  
  108.  * 获取object的内容 
  109.  
  110.  * 
  111.  
  112.  * @param OssClient $ossClient OssClient实例 
  113.  
  114.  * @param string $bucket 存储空间名称 
  115.  
  116.  * @return null 
  117.  
  118.  */ 
  119.  
  120. public function getObject($object
  121.  
  122.  
  123.   $options = array(); 
  124.  
  125.   try { 
  126.  
  127.     $content = $this->ossClient->getObject($this->bucket, $object$options); 
  128.  
  129.   } catch (OssException $e) { 
  130.  
  131.     return $e->getMessage(); 
  132.  
  133.   } 
  134.  
  135.   // file_get_contents 
  136.  
  137.   return $content
  138.  

2.基本配置与辅助函数

  1. public $ossClient,$bucket
  2.  
  3. private $configinfo =  array
  4.  
  5.   'maxSize'      => -1,  // 上传文件的最大值 
  6.  
  7.   'supportMulti'   => true,  // 是否支持多文件上传 
  8.  
  9.   'allowExts'     => array(),  // 允许上传的文件后缀 留空不作后缀检查 
  10.  
  11.   'allowTypes'    => array(),  // 允许上传的文件类型 留空不做检查 
  12.  
  13.   'thumb'       => false,  // 使用对上传图片进行缩略图处理 
  14.  
  15.   'imageClassPath'  => 'ORG.Util.Image',  // 图库类包路径 
  16.  
  17.   'thumbMaxWidth'   => '',// 缩略图最大宽度 
  18.  
  19.   'thumbMaxHeight'  => '',// 缩略图最大高度 
  20.  
  21.   'thumbPrefix'    => 'thumb_',// 缩略图前缀 
  22.  
  23.   'thumbSuffix'    => ''
  24.  
  25.   'thumbPath'     => '',// 缩略图保存路径 
  26.  
  27.   'thumbFile'     => '',// 缩略图文件名 
  28.  
  29.   'thumbExt'     => '',// 缩略图扩展名 
  30.  
  31.   'thumbRemoveOrigin' => false,// 是否移除原图 
  32.  
  33.   'zipImages'     => false,// 压缩图片文件上传 
  34.  
  35.   'autoSub'      => false,// 启用子目录保存文件 
  36.  
  37.   'subType'      => 'hash',// 子目录创建方式 可以使用hash date custom 
  38.  
  39.   'subDir'      => ''// 子目录名称 subType为custom方式后有效 
  40.  
  41.   'dateFormat'    => 'Ymd'
  42.  
  43.   'hashLevel'     => 1, // hash的目录层次 
  44.  
  45.   'savePath'     => '',// 上传文件保存路径 
  46.  
  47.   'autoCheck'     => true, // 是否自动检查附件 
  48.  
  49.   'uploadReplace'   => false,// 存在同名是否覆盖 
  50.  
  51.   'saveRule'     => 'uniqid',// 上传文件命名规则 
  52.  
  53.   'hashType'     => 'md5_file',// 上传文件Hash规则函数名 
  54.  
  55.   ); 
  56.  
  57. // 错误信息 
  58.  
  59. private $error = ''
  60.  
  61. // 上传成功的文件信息 
  62.  
  63. private $uploadFileInfo ; 
  64.  
  65. public function __get($name){ 
  66.  
  67.   if(isset($this->configinfo[$name])) { 
  68.  
  69.     return $this->configinfo[$name]; 
  70.  
  71.   } 
  72.  
  73.   return null; 
  74.  
  75.  
  76. public function __set($name,$value){ 
  77.  
  78.   if(isset($this->configinfo[$name])) { 
  79.  
  80.     $this->configinfo[$name]  =  $value
  81.  
  82.   } 
  83.  
  84.  
  85. public function __isset($name){ 
  86.  
  87.   return isset($this->configinfo[$name]); 
  88.  
  89.  
  90. /** 
  91.  
  92.  * 架构函数 
  93.  
  94.  * @access public 
  95.  
  96.  * @param array $config 上传参数 
  97.  
  98.  */ 
  99.  
  100. public function __construct($config=array()) { 
  101.  
  102.   if(is_array($config)) { 
  103.  
  104.     $this->config  =  array_merge($this->config,$config); 
  105.  
  106.   } 
  107.  
  108.   $this->bucket = C('OSS_TEST_BUCKET'); 
  109.  
  110.   $this->ossClient = new OssClient(C('OSS_ACCESS_ID'), C('OSS_ACCESS_KEY'), C('OSS_ENDPOINT'), false); 
  111.  

3.主函数

  1. /** 
  2.  
  3.  * 上传所有文件 
  4.  
  5.  * @access public 
  6.  
  7.  * @param string $savePath 上传文件保存路径 
  8.  
  9.  * @return string 
  10.  
  11.  */ 
  12.  
  13. public function upload($savePath ='') { 
  14.  
  15.   //如果不指定保存文件名,则由系统默认 
  16.  
  17.   if(emptyempty($savePath)) { 
  18.  
  19.     $savePath = $this->savePath; 
  20.  
  21.   } 
  22.  
  23.   $fileInfo  = array(); 
  24.  
  25.   $isUpload  = false; 
  26.  
  27.   // 获取上传的文件信息 
  28.  
  29.   // 对$_FILES数组信息处理 
  30.  
  31.   $files  =  $this->dealFiles($_FILES); 
  32.  
  33.   foreach($files as $key => $file) { 
  34.  
  35.     //过滤无效的上传 
  36.  
  37.     if(!emptyempty($file['name'])) { 
  38.  
  39.       //登记上传文件的扩展信息 
  40.  
  41.       if(!isset($file['key']))  $file['key']  =  $key
  42.  
  43.       $file['extension'] =  $this->getExt($file['name']); 
  44.  
  45.       $file['savepath']  =  $savePath
  46.  
  47.       $file['savename']  =  $this->getSaveName($file); 
  48.  
  49.       // 自动检查附件 
  50.  
  51.       if($this->autoCheck) { 
  52.  
  53.         if(!$this->check($file)) 
  54.  
  55.           return false; 
  56.  
  57.       } 
  58.  
  59.       //保存上传文件 
  60.  
  61.       if(!$this->save($file)) return false; 
  62.  
  63.       if(function_exists($this->hashType)) { 
  64.  
  65.         $fun = $this->hashType; 
  66.  
  67.         $file['hash']  = $fun($this->autoCharset($file['savepath'].$file['savename'],'utf-8','gbk')); 
  68.  
  69.       } 
  70.  
  71.       //上传成功后保存文件信息,供其他地方调用 
  72.  
  73.       unset($file['tmp_name'],$file['error']); 
  74.  
  75.       $fileInfo[] = $file
  76.  
  77.       $isUpload  = true; 
  78.  
  79.     } 
  80.  
  81.   } 
  82.  
  83.   if($isUpload) { 
  84.  
  85.     $this->uploadFileInfo = $fileInfo
  86.  
  87.     return true; 
  88.  
  89.   }else { 
  90.  
  91.     $this->error = '没有选择上传文件'
  92.  
  93.     return false; 
  94.  
  95.   } 
  96.  

4.核心处理函数

  1. /** 
  2.  
  3.  * 上传一个文件 
  4.  
  5.  * @access public 
  6.  
  7.  * @param mixed $name 数据 
  8.  
  9.  * @param string $value 数据表名 
  10.  
  11.  * @return string 
  12.  
  13.  */ 
  14.  
  15. private function save($file) { 
  16.  
  17.   $filename = $file['savepath'].$file['savename']; 
  18.  
  19.   if(!$this->uploadReplace && $this->doesObjectExist($filename)) { 
  20.  
  21.     // 不覆盖同名文件 
  22.  
  23.     $this->error  =  '文件已经存在!'.$filename
  24.  
  25.     return false; 
  26.  
  27.   } 
  28.  
  29.   // 如果是图像文件 检测文件格式 
  30.  
  31.   if( in_array(strtolower($file['extension']),array('gif','jpg','jpeg','bmp','png','swf'))) { 
  32.  
  33.     $info  = getimagesize($file['tmp_name']); 
  34.  
  35.     if(false === $info || ('gif' == strtolower($file['extension']) && emptyempty($info['bits']))){ 
  36.  
  37.       $this->error = '非法图像文件'
  38.  
  39.       return false; 
  40.  
  41.     } 
  42.  
  43.   } 
  44.  
  45.   if(!$this->putObject($file['tmp_name'], $this->autoCharset($filename,'utf-8','gbk'))) { 
  46.  
  47.     $this->error = '文件上传保存错误!'
  48.  
  49.     return false; 
  50.  
  51.   } 
  52.  
  53.   if($this->thumb && in_array(strtolower($file['extension']),array('gif','jpg','jpeg','bmp','png'))) { 
  54.  
  55.     $image = getimagesize(C('OSS_IMG_URL').'/'.$filename); 
  56.  
  57.     if(false !== $image) { 
  58.  
  59.       //是图像文件生成缩略图 
  60.  
  61.       $thumbWidth   =  explode(',',$this->thumbMaxWidth); 
  62.  
  63.       $thumbHeight  =  explode(',',$this->thumbMaxHeight); 
  64.  
  65.       $thumbPrefix  =  explode(',',$this->thumbPrefix); 
  66.  
  67.       $thumbSuffix  =  explode(',',$this->thumbSuffix); 
  68.  
  69.       $thumbFile   =  explode(',',$this->thumbFile); 
  70.  
  71.       $thumbPath   =  $this->thumbPath?$this->thumbPath:dirname($filename).'/'
  72.  
  73.       $thumbExt    =  $this->thumbExt ? $this->thumbExt : $file['extension']; //自定义缩略图扩展名 
  74.  
  75.       // 生成图像缩略图 
  76.  
  77.       import($this->imageClassPath); 
  78.  
  79.       for($i=0,$len=count($thumbWidth); $i<$len$i++) { 
  80.  
  81.         if(!emptyempty($thumbFile[$i])) { 
  82.  
  83.           $thumbname =  $thumbFile[$i]; 
  84.  
  85.         }else
  86.  
  87.           $prefix   =  isset($thumbPrefix[$i])?$thumbPrefix[$i]:$thumbPrefix[0]; 
  88.  
  89.           $suffix   =  isset($thumbSuffix[$i])?$thumbSuffix[$i]:$thumbSuffix[0]; 
  90.  
  91.           $thumbname =  $prefix.basename($filename,'.'.$file['extension']).$suffix
  92.  
  93.         } 
  94.  
  95.         $this->thumb(C('OSS_IMG_URL').'/'.$filename,$thumbPath.$thumbname.'.'.$thumbExt,'',$thumbWidth[$i],$thumbHeight[$i],true); 
  96.  
  97.       } 
  98.  
  99.       if($this->thumbRemoveOrigin) { 
  100.  
  101.         // 生成缩略图之后删除原图 
  102.  
  103.         $this->deleteObject($filename); 
  104.  
  105.       } 
  106.  
  107.     } 
  108.  
  109.   } 
  110.  
  111.   if($this->zipImags) { 
  112.  
  113.     // TODO 对图片压缩包在线解压 
  114.  
  115.   } 
  116.  
  117.   return true; 
  118.  
  119.  
  120. /** 
  121.  
  122.  * 生成缩略图 
  123.  
  124.  * @static 
  125.  
  126.  * @access public 
  127.  
  128.  * @param string $image 原图 
  129.  
  130.  * @param string $type 图像格式 
  131.  
  132.  * @param string $thumbname 缩略图文件名 
  133.  
  134.  * @param string $maxWidth 宽度 
  135.  
  136.  * @param string $maxHeight 高度 
  137.  
  138.  * @param string $position 缩略图保存目录 
  139.  
  140.  * @param boolean $interlace 启用隔行扫描 
  141.  
  142.  * @return void 
  143.  
  144.  */ 
  145.  
  146. public function thumb($image$thumbname$type=''$maxWidth=200, $maxHeight=50, $interlace=true) { 
  147.  
  148.   // 获取原图信息 
  149.  
  150.   $info = Image::getImageInfo($image); 
  151.  
  152.   if ($info !== false) { 
  153.  
  154.     $srcWidth = $info['width']; 
  155.  
  156.     $srcHeight = $info['height']; 
  157.  
  158.     $type = emptyempty($type) ? $info['type'] : $type
  159.  
  160.     $type = strtolower($type); 
  161.  
  162.     $interlace = $interlace ? 1 : 0; 
  163.  
  164.     unset($info); 
  165.  
  166.     $scale = min($maxWidth / $srcWidth$maxHeight / $srcHeight); // 计算缩放比例 
  167.  
  168.     if ($scale >= 1) { 
  169.  
  170.       // 超过原图大小不再缩略 
  171.  
  172.       $width = $srcWidth
  173.  
  174.       $height = $srcHeight
  175.  
  176.     } else { 
  177.  
  178.       // 缩略图尺寸 
  179.  
  180.       $width = (int) ($srcWidth * $scale); 
  181.  
  182.       $height = (int) ($srcHeight * $scale); 
  183.  
  184.     } 
  185.  
  186.     // 载入原图 
  187.  
  188.     $createFun = 'ImageCreateFrom' . ($type == 'jpg' ? 'jpeg' : $type); 
  189.  
  190.     if(!function_exists($createFun)) { 
  191.  
  192.       return false; 
  193.  
  194.     } 
  195.  
  196.     $srcImg = $createFun($image); 
  197.  
  198.     //创建缩略图 
  199.  
  200.     if ($type != 'gif' && function_exists('imagecreatetruecolor')) 
  201.  
  202.       $thumbImg = imagecreatetruecolor($width$height); 
  203.  
  204.     else 
  205.  
  206.       $thumbImg = imagecreate($width$height); 
  207.  
  208.      //png和gif的透明处理 by luofei614 
  209.  
  210.     if('png'==$type){ 
  211.  
  212.       imagealphablending($thumbImg, false);//取消默认的混色模式(为解决阴影为绿色的问题) 
  213.  
  214.       imagesavealpha($thumbImg,true);//设定保存完整的 alpha 通道信息(为解决阴影为绿色的问题) 
  215.  
  216.     }elseif('gif'==$type){ 
  217.  
  218.       $trnprt_indx = imagecolortransparent($srcImg); 
  219.  
  220.        if ($trnprt_indx >= 0) { 
  221.  
  222.           //its transparent 
  223.  
  224.           $trnprt_color = imagecolorsforindex($srcImg , $trnprt_indx); 
  225.  
  226.           $trnprt_indx = imagecolorallocate($thumbImg$trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']); 
  227.  
  228.           imagefill($thumbImg, 0, 0, $trnprt_indx); 
  229.  
  230.           imagecolortransparent($thumbImg$trnprt_indx); 
  231.  
  232.      } 
  233.  
  234.     } 
  235.  
  236.     // 复制图片 
  237.  
  238.     if (function_exists("ImageCopyResampled")) 
  239.  
  240.       imagecopyresampled($thumbImg$srcImg, 0, 0, 0, 0, $width$height$srcWidth$srcHeight); 
  241.  
  242.     else 
  243.  
  244.       imagecopyresized($thumbImg$srcImg, 0, 0, 0, 0, $width$height$srcWidth$srcHeight); 
  245.  
  246.     // 对jpeg图形设置隔行扫描 
  247.  
  248.     if ('jpg' == $type || 'jpeg' == $type
  249.  
  250.       imageinterlace($thumbImg$interlace); 
  251.  
  252.     imagePNG($thumbImg,'Uploads/file.png'); // 中转站 
  253.  
  254.     // 生成图片 
  255.  
  256.     $this->putObject('Uploads/file.png',$thumbname); 
  257.  
  258.     imagedestroy($thumbImg); 
  259.  
  260.     imagedestroy($srcImg); 
  261.  
  262.     return $thumbname
  263.  
  264.   } 
  265.  
  266.   return false; 
  267.  

5.辅助函数

  1. /** 
  2.  
  3. * 转换上传文件数组变量为正确的方式 
  4.  
  5. * @access private 
  6.  
  7. * @param array $files 上传的文件变量 
  8.  
  9. * @return array 
  10.  
  11. */ 
  12.  
  13. private function dealFiles($files) { 
  14.  
  15.     $fileArray = array(); 
  16.  
  17.     $n     = 0; 
  18.  
  19.     foreach ($files as $key=>$file){ 
  20.  
  21.       if(is_array($file['name'])) { 
  22.  
  23.         $keys    =  array_keys($file); 
  24.  
  25.         $count   =  count($file['name']); 
  26.  
  27.         for ($i=0; $i<$count$i++) { 
  28.  
  29.           $fileArray[$n]['key'] = $key
  30.  
  31.           foreach ($keys as $_key){ 
  32.  
  33.             $fileArray[$n][$_key] = $file[$_key][$i]; 
  34.  
  35.           } 
  36.  
  37.           $n++; 
  38.  
  39.         } 
  40.  
  41.       }else
  42.  
  43.         $fileArray[$key] = $file
  44.  
  45.       } 
  46.  
  47.     } 
  48.  
  49.     return $fileArray
  50.  
  51.  
  52. /** 
  53.  
  54. * 检查上传的文件 
  55.  
  56. * @access private 
  57.  
  58. * @param array $file 文件信息 
  59.  
  60. * @return boolean 
  61.  
  62. */ 
  63.  
  64. private function check($file) { 
  65.  
  66.     if($file['error']!== 0) { 
  67.  
  68.       //文件上传失败 
  69.  
  70.       //捕获错误代码 
  71.  
  72.       $this->error($file['error']); 
  73.  
  74.       return false; 
  75.  
  76.     } 
  77.  
  78.     //文件上传成功,进行自定义规则检查 
  79.  
  80.     //检查文件大小 
  81.  
  82.     if(!$this->checkSize($file['size'])) { 
  83.  
  84.       $this->error = '上传文件大小不符!'
  85.  
  86.       return false; 
  87.  
  88.     } 
  89.  
  90.     //检查文件Mime类型 
  91.  
  92.     if(!$this->checkType($file['type'])) { 
  93.  
  94.       $this->error = '上传文件MIME类型不允许!'
  95.  
  96.       return false; 
  97.  
  98.     } 
  99.  
  100.     //检查文件类型 
  101.  
  102.     if(!$this->checkExt($file['extension'])) { 
  103.  
  104.       $this->error ='上传文件类型不允许'
  105.  
  106.       return false; 
  107.  
  108.     } 
  109.  
  110.     //检查是否合法上传 
  111.  
  112.     if(!$this->checkUpload($file['tmp_name'])) { 
  113.  
  114.       $this->error = '非法上传文件!'
  115.  
  116.       return false; 
  117.  
  118.     } 
  119.  
  120.     return true; 
  121.  
  122.  
  123. // 自动转换字符集 支持数组转换 
  124.  
  125. private function autoCharset($fContents$from='gbk'$to='utf-8') { 
  126.  
  127.     $from  = strtoupper($from) == 'UTF8' ? 'utf-8' : $from
  128.  
  129.     $to   = strtoupper($to) == 'UTF8' ? 'utf-8' : $to
  130.  
  131.     if (strtoupper($from) === strtoupper($to) || emptyempty($fContents) || (is_scalar($fContents) && !is_string($fContents))) { 
  132.  
  133.       //如果编码相同或者非字符串标量则不转换 
  134.  
  135.       return $fContents
  136.  
  137.     } 
  138.  
  139.     if (function_exists('mb_convert_encoding')) { 
  140.  
  141.       return mb_convert_encoding($fContents$to$from); 
  142.  
  143.     } elseif (function_exists('iconv')) { 
  144.  
  145.       return iconv($from$to$fContents); 
  146.  
  147.     } else { 
  148.  
  149.       return $fContents
  150.  
  151.     } 
  152.  
  153.  
  154. /** 
  155.  
  156. * 检查上传的文件类型是否合法 
  157.  
  158. * @access private 
  159.  
  160. * @param string $type 数据 
  161.  
  162. * @return boolean 
  163.  
  164. */ 
  165.  
  166. private function checkType($type) { 
  167.  
  168.     if(!emptyempty($this->allowTypes)) 
  169.  
  170.       return in_array(strtolower($type),$this->allowTypes); 
  171.  
  172.     return true; 
  173.  
  174.  
  175. /** 
  176.  
  177. * 检查上传的文件后缀是否合法 
  178.  
  179. * @access private 
  180.  
  181. * @param string $ext 后缀名 
  182.  
  183. * @return boolean 
  184.  
  185. */ 
  186.  
  187. private function checkExt($ext) { 
  188.  
  189.     if(!emptyempty($this->allowExts)) 
  190.  
  191.       return in_array(strtolower($ext),$this->allowExts,true); 
  192.  
  193.     return true; 
  194.  
  195.  
  196. /** 
  197.  
  198. * 检查文件大小是否合法 
  199.  
  200. * @access private 
  201.  
  202. * @param integer $size 数据 
  203.  
  204. * @return boolean 
  205.  
  206. */ 
  207.  
  208. private function checkSize($size) { 
  209.  
  210.     return !($size > $this->maxSize) || (-1 == $this->maxSize); 
  211.  
  212.  
  213. /** 
  214.  
  215. * 检查文件是否非法提交 
  216.  
  217. * @access private 
  218.  
  219. * @param string $filename 文件名 
  220.  
  221. * @return boolean 
  222.  
  223. */ 
  224.  
  225. private function checkUpload($filename) { 
  226.  
  227.     return is_uploaded_file($filename); 
  228.  
  229.  
  230. /** 
  231.  
  232. * 取得上传文件的后缀 
  233.  
  234. * @access private 
  235.  
  236. * @param string $filename 文件名 
  237.  
  238. * @return boolean 
  239.  
  240. */ 
  241.  
  242. private function getExt($filename) { 
  243.  
  244.     $pathinfo = pathinfo($filename); 
  245.  
  246.     return $pathinfo['extension']; 
  247.  
  248.  
  249. /** 
  250.  
  251. * 取得上传文件的信息 
  252.  
  253. * @access public 
  254.  
  255. * @return array 
  256.  
  257. */ 
  258.  
  259. public function getUploadFileInfo() { 
  260.  
  261.     return $this->uploadFileInfo; 
  262.  
  263.  
  264. /** 
  265.  
  266. * 取得最后一次错误信息 
  267.  
  268. * @access public 
  269.  
  270. * @return string 
  271.  
  272. */ 
  273.  
  274. public function getErrorMsg() { 
  275.  
  276.     return $this->error; 
  277.  

总结:与普通上传的区别在于,它是全部通过阿里云的oss接口来处理文件保存的。普通上传是把本地文件移动到服务器上,而它则是把文件移动到阿里云服务器上。

缩略图思路:

a.上传图片至服务器

b.获取图片进行处理

c.上传处理好的图片至服务器

d.根据配置,删除或者不删除服务器的原图(OSS)

  1. imagePNG($thumbImg,'Uploads/file.png'); // 中转站 
  2.  
  3. // 生成图片 
  4.  
  5. $this->putObject('Uploads/file.png',$thumbname); 
  6.  
  7. unlink('Uploads/file.png'); 
  8.  
  9. imagedestroy($thumbImg);

Tags: 阿里云OSS图片上传类

分享到: