当前位置:编程学习 > > 正文

think php上传服务器(ThinkPHP5+UEditor图片上传到阿里云对象存储OSS功能示例)

时间:2022-01-14 02:39:57类别:编程学习

think php上传服务器

ThinkPHP5+UEditor图片上传到阿里云对象存储OSS功能示例

本文实例讲述了ThinkPHP5+UEditor图片上传到阿里云对象存储OSS。分享给大家供大家参考,具体如下:

ThinkPHP5使用富文本UEditor,将富文本编辑框内上传在本地的图片,修改到阿里云对象存储OSS

ThinkPHP5加载UEditor ···· 略

UEditor下载:https://ueditor.baidu.com/website/download.html#ueditor

阿里云对象存储SDK下载:https://github.com/aliyun/aliyun-oss-php-sdk

一、配置项

ueditor目录:\public\static\admin\lib\ueditor\1.4.3
OSS配置文件目录:\application\config\oos.php
OSS SDK目录:\extend\oos

二、代码

1、OSS配置文件

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • <?php
  • return [
  •   'endpoint' => 'xxxx',
  •   'accessKeyId' => 'xxxxxxxxxxx',
  •   'accessKeySecret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxx',
  •   'bucket' => 'xxxxx',
  •   'uploadurl' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', //个人配置用,上传图片访问头部完整链接
  • ];
  • 2、在UEditor下写入Oos.class.php控制器

    *注:本人用的是相对路径,请自行对照自己的目录结构替换掉文件引入地址

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • <?php
  • require_once realpath(dirname(__FILE__) . '/../../../../../../../') . '/extend/oos/autoload.php';
  • use OSS\OssClient;
  • use OSS\Core\OssException;
  • class Oos
  • {
  •   protected $oos = null;
  •   protected $bucket = null;
  •   //获取OOS客户端
  •   protected function getOssClient(){
  •     if($this->oos === null){
  •       $config = require realpath(dirname(__FILE__) . '/../../../../../../../') .'/application/config/oos.php';
  •       $this->bucket = $config['bucket'];
  •       try {
  •         $this->oos = new OssClient($config['accessKeyId'], $config['accessKeySecret'], $config['endpoint'], false);
  •       } catch (OssException $e) {
  •         printf(__FUNCTION__ . "creating OssClient instance: FAILED\n");
  •         printf($e->getMessage() . "\n");
  •         return null;
  •       }
  •     }
  •     return $this->oos;
  •   }
  •   //上传
  •   public function upload($file,$save){
  •     $config = require realpath(dirname(__FILE__) . '/../../../../../../../') .'/application/config/oos.php';
  •     $save = 'upload/'.$save;
  •     $ossClient = $this->getOssClient();
  •     if (is_null($ossClient)) exit('链接存储失败');
  •     $result = $ossClient->uploadFile($this->bucket, $save, $file);
  •     return !empty($result['x-oss-request-id']);
  •   }
  • }
  • 3、修改UEditor 上传图片的PHP文件\public\static\admin\lib\ueditor\1.4.3\php\action_crawler.php

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • <?php
  • /**
  •  * 抓取远程图片
  •  * User: Jinqn
  •  * Date: 14-04-14
  •  * Time: 下午19:18
  •  */
  • set_time_limit(0);
  • include("Uploader.class.php");
  • include("Oos.class.php");
  • // 引入oss对象
  • $oos_config = require realpath(dirname(__FILE__) . '/../../../../../../../') .'/application/config/oos.php';
  • $oos = new Oos();
  • /* 上传配置 */
  • $config = array(
  •   "pathFormat" => $CONFIG['catcherPathFormat'],
  •   "maxSize" => $CONFIG['catcherMaxSize'],
  •   "allowFiles" => $CONFIG['catcherAllowFiles'],
  •   "oriName" => "remote.png"
  • );
  • $fieldName = $CONFIG['catcherFieldName'];
  • /* 抓取远程图片 */
  • $list = array();
  • if (isset($_POST[$fieldName])) {
  •   $source = $_POST[$fieldName];
  • } else {
  •   $source = $_GET[$fieldName];
  • }
  • foreach ($source as $imgUrl) {
  •   $item = new Uploader($imgUrl, $config, "remote");
  •   $info = $item->getFileInfo();
  •   $year = date('Ymd',time());//图片路径 (年/月) 自己设置
  •   $img_name = time().rand(1,1000).$info['type'];
  •   $bos_url = "ueditor_upload/xinjieshi/image/$year/$img_name";//用作保存的图片路径和名字
  •   $oos->upload($_SERVER['DOCUMENT_ROOT'].'/'.$info['url'],$bos_url);
  •   array_push($list, array(
  •     "state" => $info["state"],
  •     "url" => $oos_config['uploadurl'].$bos_url,
  •     "size" => $info["size"],
  •     "title" => htmlspecialchars($info["title"]),
  •     "original" => htmlspecialchars($info["original"]),
  •     "source" => htmlspecialchars($imgUrl)
  •   ));
  • }
  • /* 返回抓取数据 */
  • return json_encode(array(
  •   'state'=> count($list) ? 'SUCCESS':'ERROR',
  •   'list'=> $list
  • ));
  • 希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

    原文链接:https://blog.csdn.net/qq_28285379/article/details/87972847

    上一篇下一篇

    猜您喜欢

    热门推荐