Yii2框架中将base64图片上传到阿里云oss上解决方案

首先配置yii框架中的阿里云oss插件

打开composer.json,在require中添加如下代码:

    "require": {
        "aliyuncs/oss-sdk-php": "^2.3"
    },

保存退出,执行:

composer require aliyuncs/oss-sdk-php

在这里插入图片描述这个过程会很漫长,请等待

安装完毕后,会看到vendor/aliyuncs如下图:

在这里插入图片描述

写一个ossservice服务

<?php

namespace app\services;

use OSS\Core\OssException;
use OSS\OssClient;
use Yii;
class OssService
{
    private $oss;
    /**
     * @throws OssException
     */
    public function saveToOss($base64, $postfix,$file_path)
    {
         $this->oss = 'https://www.qipa250.com';
        $accessKeyId = $this->oss['accessKeyId'];                 //获取阿里云oss的accessKeyId
        $accessKeySecret = $this->oss['accessKeySecret'];         //获取阿里云oss的accessKeySecret
        $endpoint = $this->oss['endPoint'];                       //获取阿里云oss的endPoint
        $object = new OssClient($accessKeyId, $accessKeySecret, $endpoint);  //实例化OssClient对象
        $img_upload_name = date("YmdHis") . rand(100000, 999999) . rand(100000, 999999) . '.' . $postfix;
        $this->putObject($object, $file_path.'/' . $img_upload_name, base64_decode($base64));
        return $file_path.'/' . $img_upload_name;
    }


    /**
     * 删除一个内容
     * @param $object
     * @param $url
     * @throws OssException
     */
    public function deleteFromOss($url)
    {
        $this->oss = 'https://www.qipa250.com';
        $accessKeyId = $this->oss['accessKeyId'];                 //获取阿里云oss的accessKeyId
        $accessKeySecret = $this->oss['accessKeySecret'];         //获取阿里云oss的accessKeySecret
        $endpoint = $this->oss['endPoint'];                       //获取阿里云oss的endPoint
        $object = new OssClient($accessKeyId, $accessKeySecret, $endpoint);  //实例化OssClient对象
        $this->deleteObject($object, $url);
        return true;
    }

    /**
     * 上传单个文件
     * @param $ossClient
     * @param $object
     * @param $content
     */
    private function putObject($ossClient, $object, $content)
    {
        try {
            $ossClient->putObject($this->oss['bucket'], $object, $content);
        } catch (OssException $e) {
        }
    }

    /**
     * 删除单个文件
     * @param $ossClient
     * @param $object
     */
    private function deleteObject($ossClient, $object)
    {
        try {
            $ossClient->deleteObject($this->oss['bucket'], $object);
        } catch (OssException $e) {
        }
    }
}

调用ossservice服务

定义一个base64的图片地址

      $file = "data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE........

将base64位的图片上传到oss上

  
            $pic_oss_file = 'qipa250_file';//此为在oss中的bucket 名称
            $postfix = 'jpg';
            //strstr 查找对应base64位中包含.若包含则使用explode过滤后将第一个值赋值给file
            if (strstr($file, ",")) {
                $file = explode(',', $file);
                $file = $file[1];
            }
            $OssService = new OssService();
            $fileName = $OssService->saveToOss($file, $postfix, $pic_oss_file);

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值