基于PHP后台上传图片到阿里云

第一步:先下载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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章