tp框架 阿里云oss 上传 ,删除,判断是不是存在

版权声明:版权所有。未经同意不得转发,装载 https://blog.csdn.net/limingyue0312/article/details/84184177

composer require aliyuncs/oss-sdk-php 

配置文件如下

	'ALIOSS_CONFIG' => array(
        'KEY_ID' => '',
        'KEY_SECRET' => '',
        'END_POINT' => '',
        'BUCKET' => '',
		"OSS_WEB_SITE"=>'',
//		这个OSS_WEB_SITE是oss的bucket创建后的外网访问地址,如需二级域名,可以指向二级域名,具体可以参考阿里云控制台里面的oss'oss_maxSize'=>1048576,    //1M
		'OSS_EXTS' =>array(// 设置附件上传类型
		                'image/jpg',
		                'image/gif',
		                'image/png',
		                'image/jpeg',
		                'application/octet-stream',//阿里云好像都是通过二进制上传,似乎上面4个后缀设置起到什么用?
		            ),

        ),

控制器 

<?php
namespace Admin\Controller;
use Think\Controller;

class AliossController extends Controller
{


	/**
	 * 2
	 * 实例化阿里云oos
	 * 3
	 * @return object 实例化得到的对象
	 * 4
	 */

	public function new_oss()
	{
		vendor('Alioss.autoload');

		$config = C('ALIOSS_CONFIG');

		$oss = new \OSS\OssClient($config['KEY_ID'], $config['KEY_SECRET'], $config['END_POINT']);

		return $oss;

	}

	/* 上传文件到oss并删除本地文件
	14
	* @param  string $path 文件路径
	15
	* @return bollear      是否上传
	16
	*/

	public function oss_upload($path)
	{

// 获取bucket名称

		$bucket = C('ALIOSS_CONFIG.BUCKET');
// 先统一去除左侧的.或者/ 再添加./
		if(!$path){
			return false;
		}
		$oss_path = ltrim($path, '/');

		$path = './' . $oss_path;

		if (file_exists($path)) {

			// 实例化oss类

			$oss = $this->new_oss();

			// 上传到oss  
			$result  = $oss->uploadFile($bucket, $oss_path, $path);
			// 如需上传到oss后 自动删除本地的文件 则删除下面的注释
			unlink($path);
			return $result;
//			var_dump( $result);

		} else {

//			var_dump('2');

			return false;

		}
	}



	/* 删除oss上指定文件
	40
	* @param  string $object 文件路径 例如删除 /Public/README.md文件  传Public/README.md 即可
	 *
	 */

	public function oss_delet_object($path)
	{
		// 实例化oss类

		if(!$path){
			var_dump("1");
			return array('status'=>1, 'msg'=>'要删除的图片不能为空');

		}
		$oss = $this->new_oss();

// 获取bucket名称

		$bucket = C('ALIOSS_CONFIG.BUCKET');


		try{
			$path =ltrim($path,'/'); //坑 不能有斜杆
			$test = $oss->deleteObject($bucket, $path);
			return true;
		}catch (OssException $e){
//			var_dump($e->getMessage());
			return false;
		}


	}


	/* 获取完整网络连接
	52
	* @param  string $path 文件路径
	53
	* @return string       http连接
	54
	*/

	public function get_url($path)
	{

		// 如果是空;返回空

		if (empty($path)) {

			return '';

		}

		// 如果已经有http直接返回

		if (strpos($path, 'http://') !== false) {

			return $path;

		}
		$alioss = C('ALIOSS_CONFIG');

		if (empty($alioss['KEY_ID'])) {
			return 'http://' . $_SERVER['HTTP_HOST'] . $path;
		} else {
			return 'http://' . $alioss['BUCKET'] . '.' . $alioss['END_POINT'] . $path;
		}
	}



// 这个在叫到控制器中用
	public function upFile()
	{
		$uplode = new \Think\Upload();//造实例化对象:造一个上传文件的类    
		$uplode->maxSize = "31457280";//上传文件的大小
		$uplode->exts = array('jpg', 'gif', 'png', 'jpeg');//设置图片格式
		$uplode->autoSub = true;//自动使用子目录保存上传文件 默认为true    
		$uplode->subName = array('date', 'Ymd');//文件命名方式已时期时间戳命名
		$uplode->rootPath = "./public/";//表示在public文件夹下
		$uplode->savePath = "./Uploads/";//设置附件上传目录:表示在public文件夹下自动建一个Uploads文件夹
// 上传文件
		$info = $uplode->upload();
		if (!$info) {
// 上传错误提示错误信息    
			$this->error($uplode->getError());
		} else {
			// 上传成功 获取上传文件信息
			foreach ($info as $file) {
				$path = $file['savepath'] . $file['savename'];
				$filename = $file['savename'];
			}
		}
		$path = '/public' . $path; //必须要加上完整的路径,否则在调用上传OSS方法的时候会判断该文件不存在。且'./Public/'最前面的点需要去掉,为了后面获取路径;
		$res = $this->oss_upload($path);
		if ($res) {
			$file = get_url($path);
		}
		echo $file;
		//上传到OSS的图片访问地址

	}

//oss 文件是否存在
	public function isfile($options){
//		$options="Uploads/Editor/2018-09-03/5b8d30001a348.jpg" //不能有 /
		$oss = $this->new_oss();
		$bucket = C('ALIOSS_CONFIG.BUCKET');

		$listObjectInfo = $oss->doesObjectExist($bucket, $options);
//		var_dump($listObjectInfo);
		return $listObjectInfo;

	}






}

猜你喜欢

转载自blog.csdn.net/limingyue0312/article/details/84184177