laravel uedit上传oss

laravel ueditor上传oss

首先下载ueditor包安装好! 

ueditor包没有?好吧,看这里laravel ueditor教程

oss包没有?好吧,看这里laravel oss教程

下变开始修改uedit的文件实现oss上传

一行修改三处

进入项目根目录下 /vendor/stevenyangecho/laravel-u-editor/src/Uploader 目录下

需要修改两个文件:UploadFile.php 和 Upload.php及Controller.php文件

一:

首先编辑打开  UploadFile.php  文件

差不多在第60行左右的代码处有一句上传代码:

$this->file->move(dirname($this->filePath), $this->fileName);

这是UEditor原本的上传方法 使用Laravel框架提供的move方法实现上传 我们将这行代码注释掉  oss配置我都写在config/oss.php文件中了可以看laravel oss教程这里边的oss.php

$ossClient = new OssClient(config('oss.ALIOSS_ACCESSKEYID'), config('oss.ALIOSS_ACCESSKEYSECRET'), config('oss.ALIOSS_ENDPOINT'), true);
//获得文件类型
$type='.'.$this->file->getClientOriginalExtension();
$this->fileType=$type;//设置UEditor的文件类型
//生成随机文件名
$object=time().mt_rand(100000,999999);
$object=$object.$type;//拼接到后戳名的文件名
$this->fullName=$object;//设置UEditor的文件名
try{
    //上传文件  (ALIOSS_BUCKET 填自己的BUCKET名)
    $ossClient->uploadFile(config('oss.ALIOSS_BUCKET'),config('oss.OSS_IMG_PATH').$object,$this->file->getPathName());
}catch (OssException $e){
    //设置错误消息为未知错误
    $this->stateInfo = $this->stateMap[14];
    return false;
}

二:

这个时候已经实现了上传oss了,但是为了保证UEditor的正常使用 能够正常的返回图片的访问路径还需要修改返回上传结果的代码

打开 Upload.php 这个文件 找到 getFileInfo 这个函数

public function getFileInfo()
{
    return array(
        "state" => $this->stateInfo,
        #下边url这行修改成这样的
        "url" => 'https://'.config('oss.OSS_IMG_PATH').$this->fullName,//$this->fullName,
        "title" => $this->fileName,
        "original" => $this->oriName,
        "type" => $this->fileType,
        "size" => $this->fileSize
    );
}

三:修改的是一个小bug当你复制图片到编辑器中会提示Input class not 不存在!我修改成了 122行左右 改为了

 $_POST[$upConfig['fieldName']];
/* 抓取远程文件 */
case 'catchimage':

   $upConfig = array(
       "pathFormat" => $config['catcherPathFormat'],
       "maxSize" => $config['catcherMaxSize'],
       "allowFiles" => $config['catcherAllowFiles'],
       "oriName" => "remote.png",
       'fieldName' => $config['catcherFieldName'],
   );
   
   #修改了这里
$sources = $_POST[$upConfig['fieldName']];//\Input::get($upConfig['fieldName']);
   $list = [];

ok 搞定了 试试吧! 有什么建议或者更好的方法请留言告诉我~~~~谢谢

laravel uedit上传oss

喜欢(0)

评论 抢沙发

表情