PHP 用百度编辑器oss上传,Yii2框架

首先,百度编辑器使用大裤衩同学的插件,github地址 https://github.com/BigKuCha/yii2-ueditor-widget

upload successful

二、 引用方法,页面使用yii2插件widget,如下图

form表单中添加引入\kucha\ueditor\Ueditor

upload successful

三、 第二只是将插件加载出来,要想实现上传按钮功能还需在控制器添加一下方法

代码如下,当前控制器中添加

upload successful

public function actions()
{
    return [
        'upload' => [
            'class' => 'kucha\ueditor\UEditorAction',
            'config' => [
                 "imageUrlPrefix"  => "http://lch.erp.frontend",//图片显示访问路径前缀
                "imagePathFormat" => "/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}" 
            ],
        ]
    ];
}

四、 以上步骤完成就可以将图片上传到本地文件服务器中,如果还想要有其他的设置要求,可以查看ueditor文档,并修改配置文件config.php

upload successful

前面只是实现了百度编辑器上传图片到服务器,下面通过修改upfile 方法实现上传文件图片到oss服务器!

第一步找到kucha/ueditor/uploader.php 文件

upload successful

然后找到该上传方法upFile()

upload successful

在后面文件移动的代码块进行修改,原本只是简单的实现文件存储在本地,原始的代码如下

upload successful,接下来我们需要将文件移动到oss,这一块的代码如下

if (!(move_uploaded_file($file["tmp_name"], $this->filePath) && file_exists($this->filePath))) { //移动失败
        $this->stateInfo = $this->getStateInfo("ERROR_FILE_MOVE");
    } else {
        //ueditor上传到oss,并将地址签名授权访问
        $accessKeyId = "";//去阿里云后台获取秘钥
        $accessKeySecret = "";//去阿里云后台获取秘钥
        $endpoint = "oss-cn-**.aliyuncs.com";//你的阿里云OSS地址
        $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
        $bucket= "**";//oss中的文件上传空间
        $object = 'ueditor/image/'.md5(time()).".jpg";//想要保存文件的名称
        $timeout = 3600*24*365*10;
        try{
            $ossClient->uploadFile($bucket,$object,$file);
            //由于我的是要访问私有的,所以使用签名url进行授权访问,不然图片不会显示
            $signedUrl = $ossClient->signUrl($bucket, $object, $timeout);
            //上传成功,自己编码
            // 删除本地文件
            unlink($file);
            // 定义全局变量存储图片的oss路径,这里截取字符串是因为配置那里已经设置了访问前缀,所以多余了
            $GLOBALS['ossimgurl'] = str_replace('http://mokiwi-erp-v3.oss-cn-shenzhen.aliyuncs.com/','',$signedUrl);
            $this->stateInfo = $this->stateMap[0];
        } catch(OssException $e) {
            //上传失败,自己编码
            $this->stateInfo = "上传到oss失败";
        }
    }
在这里修改完还要在getFileInfo()中将显示的url地址改为$GLOBALS[‘ossimgurl’],如下如,

upload successful

祝您,生活愉快,感恩,学习进步