php 上传到 oss,PHP上传到OSS封装方法

//该方法为在app/底下创建目录 Service然后创建Oss.php

namespace App\Service;

use OSS\Core\OssException;

use OSS\OssClient;

class Oss{

/**

* @var

*/

private $bucket;

/**

* @var

*/

private $access_id;

/**

* @var

*/

private $access_key;

/**

* @var

*/

private $endpoint;

/**

* Oss constructor.

*/

public function __construct()

{

$this->bucket = trim(config('oss.oss_bucket'));

$this->access_id = trim(config('oss.access_id'));

$this->access_key = trim(config('oss.access_key'));

$this->endpoint = trim(config('oss.oss_endpoint'));

}

/**

* 取得Oss图片数据源

* @param string $ossFileName

* @return string 文件全路径

*/

public function getArticleShareIcon($ossFileName,$oss_dir){

return $this->getUploadOssFileByConfig($ossFileName,$oss_dir);

}

/**

* 上传文件到Oss

* @param string $fileName

* @param $oss_dir

* @return null

* @throws OssException

*/

public function uploadFileToOss($fileName,$oss_dir){

//验证oss_dir

if (empty($oss_dir)){

die('oss_dir 不允许为空');

}

$ossClient = new OssClient($this->access_id,$this->access_key, $this->endpoint);

if (!$ossClient->doesObjectExist($this->bucket,$oss_dir)){

$ossClient->createObjectDir($this->bucket,$oss_dir);

}

$ext = strrchr($fileName, '.');

$hashFileName = sha1($fileName.time().rand(0,100)).$ext;

$hashFileNameWithPath = $oss_dir.$hashFileName;

//随机文件名防止重复

$result = $ossClient->uploadFile($this->bucket,$hashFileNameWithPath,$fileName);

if (isset($result['info'])){

$result['info']['filename'] = $hashFileName;

$result['info']['cdnUrl'] = $this->getOssUploadFileUrl($hashFileName,$oss_dir);

}

return isset($result['info']) ? $result['info'] : false;

}

/**

* 获取路径

* @param $oss_file

* @param $oss_dir

* @return string

*/

public function getOssUploadFileUrl($oss_file,$oss_dir){

if (empty($oss_dir) || empty($oss_file)){

die('oss_dir oss_file 不允许为空');

}

return env("OSS_CDN_ENDPOINT").$oss_dir.$oss_file;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值