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模板技术[转]
Jan 04 PHP
php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
Mar 23 PHP
thinkphp实现数组分页示例
Apr 13 PHP
PHP中iconv函数转码时截断字符问题的解决方法
Jan 21 PHP
php实现TCP端口检测的方法
Apr 01 PHP
PHP防止刷新重复提交页面的示例代码
Nov 11 PHP
Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解
Oct 13 PHP
PHP 匿名函数与注意事项详细介绍
Nov 26 PHP
php判断是否连接上网络的方法实例详解
Dec 14 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
Aug 29 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
Dec 02 PHP
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
Apr 11 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
php产生随机数的两种方法实例代码 输出随机IP
2011/04/08 PHP
php切割页面div内容的实现代码分享
2012/07/31 PHP
zf框架的registry(注册表)使用示例
2014/03/13 PHP
PHP中new static()与new self()的区别异同分析
2014/08/22 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
2015/03/25 PHP
php实现URL加密解密的方法
2016/11/17 PHP
javascript中的toFixed固定小数位数 简单实例分享
2013/07/12 Javascript
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
用原生js做个简单的滑动效果的回到顶部
2014/10/15 Javascript
EasyUI,点击开启编辑框,并且编辑框获得焦点的方法
2015/03/01 Javascript
js实现超酷的照片墙展示效果图附源码下载
2015/10/08 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
2016/12/02 Javascript
bootstrap模态框垂直居中效果
2016/12/03 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
Vue实现的父组件向子组件传值功能示例
2019/01/19 Javascript
react同构实践之实现自己的同构模板
2019/03/13 Javascript
微信小程序修改数组长度的问题的解决
2019/12/17 Javascript
Element MessageBox弹框的具体使用
2020/07/27 Javascript
[03:01]完美世界DOTA2联赛PWL S2 集锦第二期
2020/12/03 DOTA
Python内置数据结构与操作符的练习题集锦
2016/07/01 Python
python实现弹跳小球
2019/05/13 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020/02/29 Python
纯CSS3实现的阴影效果
2014/12/24 HTML / CSS
美国内衣第一品牌:Hanes(恒适)
2016/07/29 全球购物
一套带答案的C++笔试题
2014/01/10 面试题
威盛公司软件C++工程师笔试题面试题
2012/07/16 面试题
安全资金保障制度
2014/01/23 职场文书
文科生自我鉴定
2014/02/15 职场文书
党的群众路线教育实践方案
2014/05/11 职场文书
小组名称和口号
2014/06/09 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
2015年度学校卫生工作总结
2015/05/12 职场文书
赡养老人协议书范本
2015/08/06 职场文书
Vue elementUI表单嵌套表格并对每行进行校验详解
2022/02/18 Vue.js
Python OpenCV实现图像模板匹配详解
2022/04/07 Python