阿里云OSS php 自定义域名 绑定bucket 访问正常,但是上传出现错误
转载
阿里OSS中创建Bucket:xxxxoss-test
对应的Bucket 域名:xxxoss-test.oss-cn-shenzhen.aliyuncs.com
所以OSS默认的访问网址是:http://xxxoss-test.oss-cn-shenzhen.aliyuncs.com/oss/20210807/86895153fb5c625aefe6cfb50ed2ef99.png
但是想换成我们自己域名的:http://img.xxx.com/oss/20210807/86895153fb5c625aefe6cfb50ed2ef99.png
都配置好后,图片访问都正常,但是发现在上传的时候出错了
解决办法:
做OSS图片上传时,可以采用阿里云分配的oss域名,也可以使用自定义域名(绑定用户域名),使用阿里云域名太长,不美观,我使用的绑定用户域名。使用阿里云分配域名时图片文件可以正常上传,使用自定义绑定用户域名时发现报错.
"\"绑定用户域名\"bucket name is invalid"
错误大概意思是绑定的用户域名没有关联到bucket上,在查看阿里云oss文档时发现还需要使用CNAME,使用CNAME绑定到域名域名
OSS文档地址:https://help.aliyun.com/document_detail/32100.html?spm=a2c4g.11186623.6.1055.181165d3LkhGyq PHP上传代码处理逻辑
public function upload()
{
// 获取上传文件表单字段名
$fileKey = array_keys(request()->file());
//获取表单上传文件
$file = request()->file($fileKey['0']);
$resResult = Image::open($file);
try {
$config = Config::get('aliyun_oss'); //获取Oss的配置
//实例化对象 将配置传入
$ossClient = new OssClient($config['KeyId'], $config['KeySecret'], $config['Endpoint'],true);
//这里是有sha1加密 生成文件名 之后连接上后缀
$fileName = sha1(date('YmdHis', time()) . uniqid()) . '.' . $resResult->type();
//执行阿里云上传
$result = $ossClient->uploadFile($config['Bucket'], $config['path'] . $fileName, $file->getInfo()['tmp_name']);
if ($result) {
$result['code'] = 1;
$result['info'] = '图片上传成功!';
$result['url'] = $result['oss-request-url'];
return $result;
}
} catch (OssException $e) {
return $e->getMessage();
}
}
需要注意,在实例化OSS对象时后面需要添加为true,这样就可以使用自定义域名了