阿里云对象存储 OSS-base64 上传

Posted haostyle

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里云对象存储 OSS-base64 上传相关的知识,希望对你有一定的参考价值。

原地址:https://help.aliyun.com/document_detail/88473.html?spm=a2c4g.11186623.6.1090.316c145eysHW9d

 

方法封装:  
public function uploads(Request $request)
{
	$pictrue = ‘‘; // 获取图片转base64的字符串
	$result = [];
	// 转化base64编码图片 jpeg、jpg、png、bmp、gif
	if(preg_match(‘/^(data:s*image/(w+);base64,)/‘, $pictrue, $result)) {
		$type = $result[2]; // 获取图片类型
		if(in_array($type, array(‘pjpeg‘,‘jpeg‘,‘jpg‘,‘bmp‘,‘png‘))) {
			// 图片名字                
			$fileName = time().rand(1,1000).‘.‘.$type; // 图片名称
			// 临时文件
			$tmpfname = tempname("./image/", "FOO"); // windows
			$tmpfname = (‘/tmp/‘, ‘FOO‘); // linux
			// 保存图片
			$handle = fopen($tmpfname, "w");

			// return [$pic, $result];
			$object = ‘school/avatar/‘.date(‘Y/m/d‘).‘/‘.$fileName; // 阿里云上传地址
			if (fwrite($handle, base64_decode(str_replace($result[1], ‘‘, $pic)))) 
			{
				// 上传图片至阿里云OSS
				$ossClient = new Aliyunoss();
				$data = $ossClient->uploads($object, $tmpfname);
				// return [$pic, $result, $data];
				// 关闭缓存
				fclose($handle);
				// 删除本地该图片
				unlink($tmpfname);
				// 返回图片链接
				return StatusCode::getCode(0, [‘data‘ => $data]);
			}else {
				return response([‘message‘=>‘图片上传失败‘], 200);
			}

		}else {
			return response([‘message‘=>‘图片类型错误‘], 200);
		}                    
	} else {
		return response([‘message‘=>‘图片编码错误‘], 200);
	}
}

  

阿里云OSS
public function uploads($object, $content)
{
	$ossClient = self::getOssClient();
	if (is_null($ossClient)) exit(1);
	$bucket = self::getBucketName();
	try{
		$ossClient->uploadFile($bucket, $object, $content);
	} catch(OssException $e) {
		self::println(__FUNCTION__ . ": FAILED
");
		self::println($e->getMessage() . "
");
		$object = ‘error‘;
	}
	return $object;
}

  

以上是关于阿里云对象存储 OSS-base64 上传的主要内容,如果未能解决你的问题,请参考以下文章

使用阿里云OSS上传文件

阿里云oss对象存储的简单使用

Delphi阿里云存储对象支持上传文件下载文件删除文件创建目录删除目录Bucket操作等

使用axios上传文件到阿里云对象文件存储服务器oss

基于Vue和ElementUI上传文件到阿里云OSS对象存储中

图片上传阿里云(对象存储OSS)