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 26 PHP
ThinkPHP CURD方法之where方法详解
Jun 18 PHP
php浏览历史记录的方法
Mar 10 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
Oct 08 PHP
浅谈PHP中的数据传输CURL
Sep 06 PHP
php事务回滚简单实现方法示例
Mar 28 PHP
php获取ip及网址的简单方法(必看)
Apr 01 PHP
PHP判断密码强度的方法详解
May 26 PHP
php实现的二叉树遍历算法示例
Jun 15 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
Aug 07 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
May 06 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框架Symfony2经典入门教程
2014/07/08 PHP
基于PHP实现假装商品限时抢购繁忙的效果
2015/10/16 PHP
Yii2框架redis基本应用示例
2018/07/13 PHP
PHP下用Swoole实现Actor并发模型的方法
2019/06/12 PHP
10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
2011/06/08 Javascript
javascript数组去重3种方法的性能测试与比较
2013/03/26 Javascript
jQuery on()方法使用技巧详解
2015/04/16 Javascript
深入理解JS中的substr和substring
2016/04/26 Javascript
Angular 页面跳转时传参问题
2016/08/01 Javascript
prototype与__proto__区别详细介绍
2017/01/09 Javascript
jQuery实现简单复制json对象和json对象集合操作示例
2018/07/09 jQuery
微信小程序 MinUI组件库系列之badge徽章组件示例
2018/08/20 Javascript
js常用正则表达式集锦
2019/05/17 Javascript
element 中 el-menu 组件的无限极循环思路代码详解
2020/04/26 Javascript
vue实例的选项总结
2020/06/09 Javascript
在vue中axios设置timeout超时的操作
2020/09/04 Javascript
[03:02]生活中的Dendi之野外度假篇
2016/08/09 DOTA
[01:08]DOTA2“血战之命”预告片
2017/08/12 DOTA
[55:54]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python实现计算资源图标crc值的方法
2014/10/05 Python
用实例解释Python中的继承和多态的概念
2015/04/27 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
flask框架配置mysql数据库操作详解
2019/11/29 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
2020/03/06 Python
Python3+selenium实现cookie免密登录的示例代码
2020/03/18 Python
canvas绘制太极图的实现示例
2020/04/29 HTML / CSS
审计主管岗位职责
2014/01/31 职场文书
幼儿园大班毕业教师寄语
2014/04/03 职场文书
医学求职信
2014/05/28 职场文书
二人合伙经营协议书
2014/09/13 职场文书
2014年职称评定工作总结
2014/11/26 职场文书
推销搭讪开场白
2015/05/28 职场文书
幼儿园春季开学通知
2015/07/16 职场文书
CSS3通过var()和calc()函数实现动画特效
2021/03/30 HTML / CSS
Go 实现英尺和米的简单单位换算方式
2021/04/29 Golang
python中的None与NULL用法说明
2021/05/25 Python