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 discuz 主题表和回帖表的设计
Mar 13 PHP
一个PHP分页类的代码
May 18 PHP
php 转换字符串编码 iconv与mb_convert_encoding的区别说明
Nov 10 PHP
排序算法之PHP版快速排序、冒泡排序
Apr 09 PHP
一个简单安全的PHP验证码类、PHP验证码
Sep 24 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
Jun 02 PHP
PHP实现登录注册之BootStrap表单功能
Sep 03 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
Sep 22 PHP
php语言注释,单行注释和多行注释
Jan 21 PHP
ThinkPHP5框架缓存查询操作分析
May 30 PHP
thinkphp整合系列之极验滑动验证码geetest功能
Jun 18 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
Nov 10 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
第八节 访问方式 [8]
2006/10/09 PHP
thinkphp实现数组分页示例
2014/04/13 PHP
destoon实现首页显示供应、企业、资讯条数的方法
2014/07/15 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
2017/03/02 PHP
PHP PDOStatement::fetchColumn讲解
2019/01/31 PHP
jquery 学习笔记 传智博客佟老师附详细注释
2020/09/12 Javascript
jquery form 加载数据示例
2014/04/21 Javascript
JQuery报错Uncaught TypeError: Illegal invocation的处理方法
2015/03/13 Javascript
jQuery mobile 移动web(4)
2015/12/20 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
2016/06/06 Javascript
三种带箭头提示框总结实例
2016/06/14 Javascript
把普通对象转换成json格式的对象的简单实例
2016/07/04 Javascript
分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
2016/09/01 Javascript
清除浏览器缓存的几种方法总结(必看)
2016/12/09 Javascript
bootstrapValidator表单验证插件学习
2016/12/30 Javascript
关于vue.js过渡css类名的理解(推荐)
2017/04/10 Javascript
vue通过路由实现页面刷新的方法
2018/01/25 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
[02:15]你好,这就是DOTA!
2015/08/05 DOTA
[01:04:39]OG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python模块学习 filecmp 文件比较
2012/08/27 Python
python生成日历实例解析
2014/08/21 Python
Python中字典和JSON互转操作实例
2015/01/19 Python
Python的Scrapy爬虫框架简单学习笔记
2016/01/20 Python
python OpenCV学习笔记直方图反向投影的实现
2018/02/07 Python
python中的字符串内部换行方法
2018/07/19 Python
Python中join()函数多种操作代码实例
2020/01/13 Python
Pytest框架之fixture的详细使用教程
2020/04/07 Python
Python坐标轴操作及设置代码实例
2020/06/04 Python
python实现快速文件格式批量转换的方法
2020/10/16 Python
英国布鲁姆精品店:Bloom Boutique
2018/03/01 全球购物
李培根演讲稿
2014/05/22 职场文书
读《钢铁是怎样炼成的》有感:百炼方成钢
2019/11/05 职场文书
Python+tkinter实现高清图片保存
2022/03/13 Python
分享五个Node.js开发的优秀实践 
2022/04/07 NodeJs
避坑之 JavaScript 中的toFixed()和正则表达式
2022/04/19 Javascript