第一步:先下载PHP SDK包放到根目录的Vendor下。SDK下载地址:https://github.com/aliyun/aliyun-oss-php-sdk?spm=a2c63.p38356.a3.2.3b8d7557Adllch
第二步:登录阿里云,创建bucket,地址:https://oss.console.aliyun.com/bucket
Bucket 是存储桶的意思,用来存储文件用的。名字可以自定,跟腾讯云的命名有所不同。
注意:读写权限要设置成公有读私有写,上图红框所示。否则会出错的。
/**
* 阿里云图片上传
* @param $local_path 本地文件或临时文件路径
* @param $aliyunImg 阿里云路径
* @param $ext 图片后缀
* @return |null
*/
public function uploadAliyun($local_path,$aliyunImg,$ext)
{
include_once $_SERVER['DOCUMENT_ROOT']."/vendor/aliyun-oss-php-sdk-master/autoload.php";
$accessKeyId = 'LTAI4G27kVGxTdtw1ovvATE5';
$accessKeySecret = '9HPp1wHOBQGzjnAqRfTz2VfiQxAv2t';
$endpoint = 'oss-cn-shenzhen.aliyuncs.com';
$bucket = 'hanlusir-shop';
try {
$ossClient = new \OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint);
$result = $ossClient->uploadFile($bucket, $aliyunImg, $local_path,['Content-Type'=>'image/'.$ext]);
return $result['info']['url'];
} catch (\Exception $e) {
echo $e->getMessage();
return null;
}
}
第二个参数阿里云路径可以写成带目录结构的,如果目录不存在的话,阿里云会自动创建目录。
使用示例:
$local_path = $param['files']['tmp_name'];
$ext = pathinfo($param['files']['name'],PATHINFO_EXTENSION);
$aliyunImg = $param['savePath'].$param['saveName'] . '.' . $ext;
$r = $this->uploadAliyun($local_path,$aliyunImg,$ext);
注意:如果你上传的文件是下载而不是直接预览的话,那么设置就是有问题的。
可以参考本人另外一篇文章:
解决:打开阿里云图片显示下载,而不是直接预览的问题 https://blog.csdn.net/weixin_42433970/article/details/106430563