简单的 OSS 图片上传

通过Composer安装 aliyuncs

成功后在公共文件里引用 OSS\OssClient;OSS\Core\OssException; 两个文件

然后编写初始化OSS的方法,前面三个参数就不用多说了,第四个参数官方说的是如果是自定义域名应该填写为true,但实际上我填写后一直报错,填写为false则正常。

// 应用公共文件

use OSS\OssClient;
use OSS\Core\OssException;

function saNewOss($ossConfig,$isCName)
{
    try {
        return new OssClient($ossConfig['KeyId'], $ossConfig['KeySecret'], $ossConfig['Endpoint'], $isCName);
    } catch (OssException $e) {
        print $e->getMessage();
    }
}

传入一个Base64的图片,然后保存到本地,然后上传到OSS。

function base64ImgSaveOss($img, $types = null)
{
    // 设置目录
    $ymd = date("Ymd");
    $fullPath = 'upload/ossBase64/' . $ymd . '/';
    $fullPathOss = 'cards/' . $ymd . '/';
    if (!file_exists($fullPath)) {
        mkdir($fullPath, 0777, true);
    }
    // 设置文件类型
    $types = empty($types) ? array('jpg', 'gif', 'png', 'jpeg') : $types;
    // 转换被替换掉的字符
    $img = str_replace(['_', '-'], ['/', '+'], $img);
    $b64Img = substr($img, 0, 100);
    if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $b64Img, $matches)) {
        $type = $matches[2];
        if (!in_array($type, $types)) {
            return ''; //不支持的图片格式
        }
        $img = str_replace($matches[1], '', $img);
        $img = base64_decode($img);
        $photo = md5(date('YmdHis') . rand(1000, 9999)) . '.' . $type;
        file_put_contents($fullPath . $photo, $img);
        $ossConfig = config('card.oss');
        saNewOss($ossConfig, false)->uploadFile($ossConfig['Bucket'], $fullPathOss . $photo, $fullPath . $photo);
        return Config("card.ossPath") . $fullPathOss . $photo;
    }
    return ''; //图片为空
}

全部评论(0)
必填
必填,不公开
我信任你,不会填写广告链接
收起