【关于富文本编辑器ueditor(php版)上传文件到阿里云OSS的简单实例】

本文介绍了如何在PHP项目中使用阿里云OSS服务,将富文本编辑器中的图片上传并存储。作者提供了OssInUe类的代码片段,展示了如何构造OSS客户端、设置文件名和上传文件到OSS的过程。

本人博客地址:a.95home.top
最近由于项目中要求图片上传到阿里云OSS,因此学习了一下。在写个人博客的时候,发现富文本编辑器的图片是存在项目目录下的,于是想了想,可否也把富文本编辑器中的图片也上传到OSS呢?因此百度了一波,发现只有jsp版本的修改方法。所以自己就学着撸了。
首先当然是在项目中引入阿里云OSS和富文本编辑器ueditor了,这一步,按照官方文档来就号,不在赘述。接下来就开始撸代码咯!
接下来,先放一张项目目录截图出来供大家参考。
这里写图片描述这里写图片描述这里写图片描述
下面不废话了,直接放代码。
第一步,新建文件:OssInUe.php

<?php
    if (is_file('../../../vendor/autoload.php')) {
        require_once  '../../../vendor/autoload.php';
    }
    use OSS\OssClient;
    use OSS\Core\OssException;
    
    /**
     * Created by PhpStorm.
     * User: crjy
     * Date: 2017/10/13
     * Time: 15:46
     */
    class OssInUe{
        public function __construct(){
    
        }
        function uploadToAliOSS($file,$fileType){
            $entension = $fileType; //上传文件的后缀
            $newName = date('YmdHis').mt_rand(100000,999999).".".$entension;//上传到oss的文件名
            $accessKeyId = '你的阿里云AccessKeyId';//涉及到隐私就不放出来了
            $accessKeySecret = '您的阿里云AccessKeySecret';//涉及到隐私就不放出来了
            $endpoint = 'oss-cn-shenzhen.aliyuncs.com';//域名
            $bucket= 'hu-first-bucket';//" <您使用的Bucket名字,注意命名规范>";
            $object = $newName;//" <您使用的Object名字,注意命名规范>";
            $content = $file["tmp_name"];//上传的文件
            try {
                $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
                $ossClient->setTimeout(3600 /* seconds */);
                $ossClient->setConnectTimeout(10 /* seconds */);
                //$ossClient->putObject($bucket, $object, $content);
                // 先把本地的example.jpg上传到指定$bucket, 命名为$object
                $ossClient->uploadFile($bucket, $object, $content);
                $signedUrl = $ossClient->signUrl($bucket, $object);
                $path = explode('?',$signedUrl)[0];
                $obj['status'] = true;
                $obj['path'] = $path;
            } catch (OssException $e) {
                $obj['status'] = false;
                $obj['path'] = "";
                print $e->getMessage();
            }
            return $obj;
        }
    }
​第二步,修改文件:Uploader.class.php
<?php
    /*支持阿里云OSS修改:第0处,引入新建的文件OssInUe.php*/
    require_once  __DIR__.'/OssInUe.php';
    /**
     * Created by JetBrains PhpStorm.
     * User: taoqili
     * Date: 12-7-18
     * Time: 上午11: 32
     * UEditor编辑器通用上传类
     */
    class Uploader
    {
        /*此处未做更改,省略,主要因为字数太多了,尴尬*/
    
        /**
         * 上传文件的主处理方法
         * @return mixed
         */
        private function upFile()
        {
            /*此处未作更改,省略,主要因为字数太多了,尴尬*/
            //检查是否不允许的文件格式
            if (!$this->checkType()) {
                $this->stateInfo = $this->getStateInfo("ERROR_TYPE_NOT_ALLOWED");
                return;
            }
            /*支持阿里云OSS修改:第一处,start*/
            //创建目录失败
            /*if (!file_exists($dirname) && !mkdir($dirname, 0777, true)) {
                $this->stateInfo = $this->getStateInfo("ERROR_CREATE_DIR");
                return;
            } else if (!is_writeable($dirname)) {
                $this->stateInfo = $this->getStateInfo("ERROR_DIR_NOT_WRITEABLE");
                return;
            }*/
    
            //移动文件
            /*if (!(move_uploaded_file($file["tmp_name"], $this->filePath) && file_exists($this->filePath))) { //移动失败
                $this->stateInfo = $this->getStateInfo("ERROR_FILE_MOVE");
            } else { //移动成功
                $this->stateInfo = $this->stateMap[0];
            }*/
            $ossInUe = new OssInUe();
            $obj = $ossInUe->uploadToAliOSS($file,$this->fileType);
            if ($obj['status'] == true){
                $this->fullName = $obj['path'];
                $this->stateInfo = $this->stateMap[0];
            }else{
                $this->stateInfo = $this->getStateInfo("ERROR_WRITE_CONTENT");
            }
            /*支持阿里云OSS修改:第一处,end*/
        }
    
        /**
         * 处理base64编码的图片上传
         * @return mixed
         */
        private function upBase64()
        {
            $base64Data = $_POST[$this->fileField];
            $img = base64_decode($base64Data);
    
            $this->oriName = $this->config['oriName'];
            $this->fileSize = strlen($img);
            $this->fileType = $this->getFileExt();
            $this->fullName = $this->getFullName();
            $this->filePath = $this->getFilePath();
            $this->fileName = $this->getFileName();
            $dirname = dirname($this->filePath);
    
            //检查文件大小是否超出限制
            if (!$this->checkSize()) {
                $this->stateInfo = $this->getStateInfo("ERROR_SIZE_EXCEED");
                return;
            }
            /*支持阿里云OSS修改:第二处,start*/
            /*//创建目录失败
            if (!file_exists($dirname) && !mkdir($dirname, 0777, true)) {
                $this->stateInfo = $this->getStateInfo("ERROR_CREATE_DIR");
                return;
            } else if (!is_writeable($dirname)) {
                $this->stateInfo = $this->getStateInfo("ERROR_DIR_NOT_WRITEABLE");
                return;
            }*/
    
            //移动文件
            /*if (!(file_put_contents($this->filePath, $img) && file_exists($this->filePath))) { //移动失败
                $this->stateInfo = $this->getStateInfo("ERROR_WRITE_CONTENT");
            } else { //移动成功
                $this->stateInfo = $this->stateMap[0];
            }*/
            $ossInUe = new OssInUe();
            $obj = $ossInUe->uploadToAliOSS($img,$this->fileType);
            if ($obj['status'] == true){
                $this->fullName = $obj['path'];
                $this->stateInfo = $this->stateMap[0];
            }else{
                $this->stateInfo = $this->getStateInfo("ERROR_WRITE_CONTENT");
            }
            /*支持阿里云OSS修改:第二处,end*/
        }
    
        /**
         * 拉取远程图片
         * @return mixed
         */
        private function saveRemote()
        {
            /*此处未作更改,省略,主要因为字数太多了,尴尬*/
    
            //检查文件大小是否超出限制
            if (!$this->checkSize()) {
                $this->stateInfo = $this->getStateInfo("ERROR_SIZE_EXCEED");
                return;
            }
            /*支持阿里云OSS修改:第三处,start*/
           /* //创建目录失败
            if (!file_exists($dirname) && !mkdir($dirname, 0777, true)) {
                $this->stateInfo = $this->getStateInfo("ERROR_CREATE_DIR");
                return;
            } else if (!is_writeable($dirname)) {
                $this->stateInfo = $this->getStateInfo("ERROR_DIR_NOT_WRITEABLE");
                return;
            }
    
            //移动文件
            if (!(file_put_contents($this->filePath, $img) && file_exists($this->filePath))) { //移动失败
                $this->stateInfo = $this->getStateInfo("ERROR_WRITE_CONTENT");
            } else { //移动成功
                $this->stateInfo = $this->stateMap[0];
            }*/
            $ossInUe = new OssInUe();
            $obj = $ossInUe->uploadToAliOSS($img,$this->fileType);
            if ($obj['status'] == true){
                $this->fullName = $obj['path'];
                $this->stateInfo = $this->stateMap[0];
            }else{
                $this->stateInfo = $this->getStateInfo("ERROR_WRITE_CONTENT");
            }
            /*支持阿里云OSS修改:第三处,start*/
        }
    
        /*此处未做更改,省略,主要因为字数太多了,尴尬*/
    
    }

​ ​第三步,启动服务,这篇文章中的图片已经上传到阿里云OSS。完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值