* OSS.php
<?php
namespace App\Helpers\Utils\Alibaba;
use OSS\OssClient;
// composer require aliyuncs/oss-sdk-php
// @ref: https://help.aliyun.com/document_detail/31855.html?spm=5176.87240.400427.25.38a04614SOLza3
// @ref: https://oss.console.aliyun.com/overview
// 因为语音识别服务,音频文件必须是在阿里云OSS对象存储空间, 所以音频文件要先传到阿里云OSS
// https://help.aliyun.com/document_detail/90727.html
class OSS
{
/** @var OssClient */
protected $client;
const END_POINT = "oss-cn-shanghai.aliyuncs.com";
public function __construct()
{
$accessKeyId = config('constant.alibaba_access_key_id');
$accessKeySecret = config('constant.alibaba_access_key_secret');
$endpoint = "http://".self::END_POINT;
$this->client = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
// 设置Socket层传输数据的超时时间,单位秒,默认5184000秒。
$this->client->setTimeout(3600);
// 设置建立连接的超时时间,单位秒,默认10秒。
$this->client->setConnectTimeout(10);
}
public function upload(string $targetUri, string $srcPath, $bucket = "asr021") {
// $this->client->createBucket($bucket);
$content = file_get_contents($srcPath);
$this->client->putObject($bucket, $targetUri, $content);
// $listObjectInfo = $this->client->listObjects($bucket);
// return $listObjectInfo->getObjectList();
return $targetUri;
}
public function bucket(string $bucket) {
$this->client->createBucket($bucket, OssClient::OSS_ACL_TYPE_PUBLIC_READ);
return $this;
}
}
Usage:
use App\Helpers\Utils\Alibaba\NLSFileTrans;
use App\Helpers\Utils\Alibaba\OSS;
// path为待上传文件的真实路径, bucket为oss文件存储分组名
$oss = new OSS();
$filename = md5_file($path);
$uri = sprintf("%s/%s.%s", date("Y-m-d", time()), $filename, $ext);
$oss->bucket($bucket)->upload($uri, $path, $bucket);
return "https://".$bucket.".".OSS::END_POINT."/".$uri;