上传图片阿里云

class Merchant_ApiDefaultController extends Zend_Controller_Action {
    protected $customer = '';
    public function preDispatch(){
        $this->customer = Merchant_Service_Customer::getLoginInfo()->customer;
    }
    
	public function uploadImageAlibabaCloudAction() {
		$return = array('ask' => 0, 'msg' => '');
		$filename = $_FILES['picture']['name'];
		
		// 图片资源
		$uploadContents = @file_get_contents($_FILES['picture']['tmp_name']);
		Merchant_Service_AlibabaCloudInterface::upload('exceptionImages/' . $filename, $uploadContents);

		// 获得缩略图存储的临时位置
		$serviceObj = new Merchant_Service_Product();
		$targetDir = $serviceObj->getPictureUploadDir($this->customer['customer_id']);
		// 生成略缩图
		$targetFileThumb = $targetDir . "/thumb_" . $filename;
		@Merchant_Service_ProductAttached::makeThumbnail($_FILES['picture']['tmp_name'], $targetFileThumb, 75, 75);
		Merchant_Service_AlibabaCloudInterface::upload('exceptionImages/thumb_' . $filename, $targetFileThumb, 'links');
		@unlink($targetFileThumb);

		$return['ask'] = 1;
		$return['msg'] = Zend_I18n::getInstance()->translate('1101166');
		$return['filename'] = $filename;
		$return['filepath'] = 'http://cff-img.oss-cn-shenzhen.aliyuncs.com/exceptionImages/' . $filename;
		die(Zend_Json::encode($return));
	}
}


class Merchant_Service_Product {
	/**
	* 获得创建产品图片上传的临时目录
	* return string
	*/
	public function getPictureUploadDir($customerId = null){
		$customerId = $this->getCustomerId($customerId);
		$customerDir = '/var/www/CFF/front/application'."/../data/images/".$customerId;
		if(!file_exists($customerDir)){
			if(mkdir($customerDir)){
				chmod($customerDir,0777);
			}
		}
		return $customerDir;
	}
}


class Merchant_Service_ProductAttached {
	/**
	* 生成略缩图
	* 只考虑jpg,png,gif格式
	* $srcImgPath 源图象路径
	* $targetImgPath 目标图象路径
	* $targetW 目标图象宽度
	* $targetH 目标图象高度
	*/
	public static function makeThumbnail($srcImgPath, $targetImgPath, $targetW, $targetH) {
		 $imgSize = GetImageSize($srcImgPath);
		 $imgType = $imgSize[2];
		 //@ 使函数不向页面输出错误信息
		 switch ($imgType) {
			case 1:
				$srcImg = @ImageCreateFromGIF($srcImgPath);
				break;
			case 2:
				$srcImg = @ImageCreateFromJpeg($srcImgPath);
				break;
			case 3:
				$srcImg = @ImageCreateFromPNG($srcImgPath);
				break;
		}
		 //取源图象的宽高
		$srcW = ImageSX($srcImg);
		$srcH = ImageSY($srcImg);
		if($srcW>$targetW || $srcH>$targetH) {
			$targetX = 0;
			$targetY = 0;
			if ($srcW > $srcH) {
				$finaW=$targetW;
				$finalH=round($srcH*$finaW/$srcW);
				$targetY=floor(($targetH-$finalH)/2);
			} else {
				$finalH=$targetH;
				$finaW=round($srcW*$finalH/$srcH);
				$targetX=floor(($targetW-$finaW)/2);
			}
			  //function_exists 检查函数是否已定义
			  //ImageCreateTrueColor 本函数需要GD2.0.1或更高版本
			if(function_exists("ImageCreateTrueColor")) {
				$targetImg=ImageCreateTrueColor($finaW,$finalH);
			} else {
				$targetImg=ImageCreate($finaW,$finalH);
			}
			$targetX=($targetX<0)?0:$targetX;
			$targetY=($targetX<0)?0:$targetY;
			$targetX=($targetX>($finaW/2))?floor($finaW/2):$targetX;
			$targetY=($targetY>($finalH/2))?floor($finalH/2):$targetY;
			  //背景白色
			$white = ImageColorAllocate($targetImg, 255,255,255);
			ImageFilledRectangle($targetImg,0,0,$finaW,$finalH,$white);
			/*
				PHP的GD扩展提供了两个函数来缩放图象:
				ImageCopyResized 在所有GD版本中有效,其缩放图象的算法比较粗糙,可能会导致图象边缘的锯齿。
				ImageCopyResampled 需要GD2.0.1或更高版本,其像素插值算法得到的图象边缘比较平滑,
					该函数的速度比ImageCopyResized慢。
			*/
			if(function_exists("ImageCopyResampled")) {
				ImageCopyResampled($targetImg,$srcImg,0,0,0,0,$finaW,$finalH,$srcW,$srcH);
			} else {
				ImageCopyResized($targetImg,$srcImg,0,0,0,0,$finaW,$finalH,$srcW,$srcH);
			}
			  switch ($imgType) {
				case 1:
					ImageGIF($targetImg,$targetImgPath);
					break;
				case 2:
					ImageJpeg($targetImg,$targetImgPath);
					break;
				case 3:
					ImagePNG($targetImg,$targetImgPath);
					break;
			}
			ImageDestroy($srcImg);
			ImageDestroy($targetImg);
		} else {
			//不超出指定宽高则直接复制
			copy($srcImgPath,$targetImgPath);
			ImageDestroy($srcImg);
		}
	}
}


require_once '/var/www/CFF/front/libs/aliyun-oss-php-sdk-master/autoload.php';

use OSS\OssClient;
use OSS\Core\OssException;

class Merchant_Service_AlibabaCloudInterface {

	private static $accessKeyId = 'LTAIG8whza7A84nK';
	private static $accessKeySecret = 'Pjhf8hB6rmnZRZX9AMVSWSO8ESkeWQ';
	private static $endpoint = 'http://oss-cn-shenzhen.aliyuncs.com';

	/**
	 *	上传
	 * @param String $name		名
	 * @param String $filepath	文件路径
	 * @param String $type		操作类型
	 * @param String $bucket	传入
	 */
	public static function upload($name, $filepath, $type = 'source', $bucket = 'cff-img') {
		set_time_limit(0);
		try {
			if ($type == 'links') {
				$filepath = @file_get_contents($filepath);
			}
			$obj = new OssClient(self::$accessKeyId, self::$accessKeySecret, self::$endpoint);
			$obj->putObject($bucket, $name, $filepath);
		} catch (OssException $exc) {
			Default_Service_Common::logErrorByFiles($exc->getMessage(), 'alibabaCloudInterface.log');
		}
	}
}

注:需要下载并加载阿里云类包
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值