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 相关文章推荐
关于file_get_contents返回为空或函数不可用的解决方案
Jun 24 PHP
php读取文件内容的方法汇总
Jan 24 PHP
php绘制圆形的方法
Jan 24 PHP
php preg_match的匹配不同国家语言实例
Dec 29 PHP
PHP在linux上执行外部命令的方法
Feb 06 PHP
CodeIgniter整合Smarty的方法详解
Aug 25 PHP
PHP中localeconv()函数的用法
Mar 26 PHP
thinkphp3.2框架中where条件查询用法总结
Aug 13 PHP
PHP Swoole异步Redis客户端实现方法示例
Oct 24 PHP
ThinkPHP5 框架引入 Go AOP,PHP AOP编程项目详解
May 12 PHP
PHP如何防止用户重复提交表单
Dec 09 PHP
PHP哈希表实现算法原理解析
Dec 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中使用unset销毁变量并内存释放问题
2012/07/05 PHP
php中memcache 基本操作实例
2015/05/17 PHP
微信支付的开发流程详解
2016/09/13 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
CI框架(CodeIgniter)公共模型类定义与用法示例
2017/08/10 PHP
laravel 实现向公共模板中传值 (view composer)
2019/10/22 PHP
解决遍历时Array.indexOf产生的性能问题
2012/07/03 Javascript
jQuery中click事件的定义和用法
2014/12/20 Javascript
JavaScript中的object转换成number或string规则介绍
2014/12/31 Javascript
js判断当前页面用什么浏览器打开的方法
2016/01/06 Javascript
JavaScript数据结构与算法之集合(Set)
2016/01/29 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
Node.js中 __dirname 的使用介绍
2017/06/19 Javascript
详解如何让InstantClick兼容MathJax、百度统计等
2017/09/12 Javascript
前端常见跨域解决方案(全)
2017/09/19 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
浅谈element中InfiniteScroll按需引入的一点注意事项
2020/06/05 Javascript
python内存管理分析
2015/04/08 Python
Python更新数据库脚本两种方法及对比介绍
2017/07/27 Python
Pandas标记删除重复记录的方法
2018/04/08 Python
Python使用 Beanstalkd 做异步任务处理的方法
2018/04/24 Python
Django框架的使用教程路由请求响应的方法
2018/07/03 Python
python实现画五角星和螺旋线的示例
2019/01/20 Python
详解Python学习之安装pandas
2019/04/16 Python
使用Python函数进行模块化的实现
2019/11/15 Python
Python 使用生成器代替线程的方法
2020/08/04 Python
python爬虫用request库处理cookie的实例讲解
2021/02/20 Python
css3针对移动端卡顿问题的解决(动画性能优化)
2020/02/14 HTML / CSS
什么是"引用"?申明和使用"引用"要注意哪些问题?
2016/03/03 面试题
网络教育自我鉴定
2014/02/04 职场文书
工作迟到检讨书
2014/02/21 职场文书
应用数学专业求职信
2014/03/14 职场文书
2015年圣诞节活动总结
2015/03/24 职场文书
MySQL 慢查询日志深入理解
2021/04/22 MySQL
解决Maven项目中 Invalid bound statement 无效的绑定问题
2021/06/15 Java/Android
Redis 报错 error:NOAUTH Authentication required
2022/05/15 Redis