kindeditor 加入七牛云上传的实例讲解


Posted in PHP onNovember 12, 2017

七牛云上传主要有两种:

服务端上传

前端上传,前端又分两种返回方式:

1).重定向返回,可以解决ajax跨域的问题

2).回调返回,七牛云先向服务端要返回数据,再由七牛云返回前端,解决不支持重定向的请求方式,比如小程序上传

本次使用的是 七牛云 php sdk;

composer require qiniu/php-sdk

在Kindeditor/php 下添加 config.php 主要是配置参数

<?php
error_reporting(0);
 
defined('ROOT_PATH') || define('ROOT_PATH', dirname(__DIR__).'/');
defined('QINIU_ACCESS_KEY') || define('QINIU_ACCESS_KEY', '');
defined('QINIU_SECRET_KEY') || define('QINIU_SECRET_KEY', '');
defined('QINIU_TEST_BUCKET') || define('QINIU_TEST_BUCKET', '七牛云空间名');
defined('QINIU_BUCKET_DOMAIN') || define('QINIU_BUCKET_DOMAIN', '七牛云空间网址');
 
defined('CALLBACK_URL') || define('CALLBACK_URL', '域名/kindeditor/php/callBack.php');
defined('RETURN_URL') || define('RETURN_URL', '域名/kindeditor/php/returnBack.php');
 
require_once ROOT_PATH."vendor/autoload.php";

在Kindeditor/php 下添加 qiniu_token.php 主要是生成上传用的 token

<?php
use Qiniu\Auth;
 
require_once __DIR__."/config.php";
 
// 构建鉴权对象
$auth = new Auth(QINIU_ACCESS_KEY, QINIU_SECRET_KEY);
 
$data = [
  'returnUrl' => RETURN_URL,
];
if (isset($_REQUEST['is_call'])) {
  $data = [
   'callbackUrl' => CALLBACK_URL,
   'callbackBody' => 'key=$(key)&hash=$(etag)&w=$(imageInfo.width)&h=$(imageInfo.height)'
  ];
}
// 生成上传 Token
$token = $auth->uploadToken(QINIU_TEST_BUCKET, null, 3600, $data);
 
echo json_encode([
  'error' => 0,
  'token' => $token
]);

在Kindeditor/php 下添加 callBack.php 主要是回调用

<?php
use Qiniu\Auth;
 
require_once __DIR__."/config.php";
$_body = file_get_contents('php://input');
$auth = new Auth(QINIU_ACCESS_KEY, QINIU_SECRET_KEY);
//回调的contentType
$contentType = 'application/x-www-form-urlencoded';
//回调的签名信息,可以验证该回调是否来自七牛
$authorization = $_SERVER['HTTP_AUTHORIZATION'];
$isQiniuCallback = $auth->verifyCallback($contentType, $authorization, CALLBACK_URL, $_body);
if (!$isQiniuCallback) {
  echo json_encode([
    'error' => 2,
    'message' => '验证失败'
  ]);
  die();
}
 
$body = $_POST;
$qiniu_url = QINIU_BUCKET_DOMAIN;
if (!empty($body['key'])) {
  echo json_encode([
    'error' => 0,
    'url' => $qiniu_url.$body['key']
  ]);
  die();
}
echo json_encode([
  'error' => 1,
  'message' => '视频上传出错'
]);

在Kindeditor/php 下添加 returnBack.php 主要是重定向接收地址

<?php
use Qiniu\Auth;
 
require_once __DIR__."/config.php";
$upload_ret = base64_decode($_GET['upload_ret']);
$upload_ret = json_decode($upload_ret, true);
$qiniu_url = QINIU_BUCKET_DOMAIN;
if (!empty($upload_ret['key'])) {
  echo json_encode([
    'error' => 0,
    'url' => $qiniu_url.$upload_ret['key']
  ]);
  die();
}
echo json_encode([
  'error' => 1,
  'message' => '视频上传出错'
]);

接下来是前端更改,我改的时视频上传

Kindeditor/plugins/media/media.js

KindEditor.plugin('media', function(K) {
  var self = this, name = 'media', lang = self.lang(name + '.'),
    allowMediaUpload = K.undef(self.allowMediaUpload, true),
    allowFileManager = K.undef(self.allowFileManager, false),
    formatUploadUrl = K.undef(self.formatUploadUrl, true),
    extraParams = K.undef(self.extraFileUploadParams, {
      'token': ''//添加token
    }),
    filePostName = K.undef(self.filePostName, 'file'), //更改文件上传名
    uploadJson = K.undef(self.uploadJson, 'https://up.qbox.me'); //更改上传地址,我用的时华东区的空间使用https
 
     
    ....
 
      function getQToken() {
        $.getJSON('/includes/kindeditor/php/qiniu_token.php', function (data) {
          K('[name="token"]', div).val(data.token);
        });
      }
            // 获取设置上传token
      getQToken();
 
      if (allowMediaUpload) {
        var uploadbutton = K.uploadbutton({
          button : K('.ke-upload-button', div)[0],
          fieldName : filePostName,
          extraParams : extraParams,
          url : uploadJson,//去除添加参数
          afterUpload : function(data) {
      ...
});

这要就可以上传视频到七牛云了。

以上这篇kindeditor 加入七牛云上传的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
基于PHP与XML的PDF文档生成技术
Oct 09 PHP
别人整理的服务器变量:$_SERVER
Oct 20 PHP
php短域名转换为实际域名函数
Jan 17 PHP
PHP教程之PHP中shell脚本的使用方法分享
Feb 23 PHP
redis 队列操作的例子(php)
Apr 12 PHP
php读取纯真ip数据库使用示例
Jan 26 PHP
thinkphp常见路径用法分析
Dec 02 PHP
用PHP生成excel文件到指定目录
Jun 22 PHP
PHP基于单例模式实现的mysql类
Jan 09 PHP
php+js实现百度地图多点标注的方法
Nov 30 PHP
PHP多进程编程实例详解
Jul 19 PHP
如何在PHP环境中使用ProtoBuf数据格式
Jun 19 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 #PHP
PHP 断点续传实例详解
Nov 11 #PHP
PHP+AJAX 投票器功能
Nov 11 #PHP
PHP实现双链表删除与插入节点的方法示例
Nov 11 #PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 #PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 #PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 #PHP
You might like
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
2011/04/23 PHP
php将gd生成的图片缓存到memcache的小例子
2013/06/05 PHP
thinkPHP下的widget扩展用法实例分析
2015/12/26 PHP
PHP实现多级分类生成树的方法示例
2017/02/07 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
PHP内存溢出优化代码详解
2021/02/26 PHP
推荐:极酷右键菜单
2006/11/29 Javascript
背景音乐每次刷新都可以自动更换
2007/02/01 Javascript
jQuery 名称冲突的解决方法
2011/04/08 Javascript
JS的replace方法介绍
2012/10/20 Javascript
在JavaScript中typeof的用途介绍
2013/04/11 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
jquery等待效果示例
2014/05/01 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
2015/07/29 Javascript
谈谈我对JavaScript中typeof和instanceof的深入理解
2015/12/25 Javascript
AngularJS单选框及多选框实现双向动态绑定
2016/01/13 Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
2016/03/09 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
Bootstrap响应式导航由768px变成992px的实现代码
2017/06/15 Javascript
React Native 搭建开发环境的方法步骤
2017/10/30 Javascript
代码详解Vuejs响应式原理
2017/12/20 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
js对象数组和对象的使用实例详解
2019/08/27 Javascript
微信小程序对图片进行canvas压缩的方法示例详解
2020/11/12 Javascript
[02:56]DOTA2亚洲邀请赛 VG出场战队巡礼
2015/02/07 DOTA
简介Python中用于处理字符串的center()方法
2015/05/18 Python
深入学习Python中的装饰器使用
2016/06/20 Python
python得到电脑的开机时间方法
2018/10/15 Python
Pycharm自动添加文件头注释和函数注释参数的方法
2020/10/23 Python
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
花园仓库建筑:Garden Buildings Direct
2018/02/16 全球购物
css animation配合SVG制作能量流动效果
2021/03/24 HTML / CSS
淘宝客服专员岗位职责
2014/04/11 职场文书
秦兵马俑导游词
2015/02/02 职场文书
《刷子李》教学反思
2016/02/20 职场文书
JavaScript如何优化逻辑判断代码详解
2021/06/08 Javascript