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 13 PHP
ThinkPHP3.1.3版本新特性概述
Jun 19 PHP
10个实用的PHP正则表达式汇总
Oct 23 PHP
迪菲-赫尔曼密钥交换(Diffie?Hellman)算法原理和PHP实现版
May 12 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
Aug 18 PHP
PHP实现的网站目录扫描索引工具
Sep 08 PHP
PHP批量获取网页中所有固定种子链接的方法
Nov 18 PHP
php 猴子摘桃的算法
Jun 20 PHP
PHP不使用内置函数实现字符串转整型的方法示例
Jul 03 PHP
PHP给源代码加密的几种方法汇总(推荐)
Feb 06 PHP
php获取手机端的号码以及ip地址实例代码
Sep 12 PHP
PHP文件操作实例总结【文件上传、下载、分页】
Dec 08 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
phpize的深入理解
2013/06/03 PHP
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
JS 删除字符串最后一个字符的实现代码
2014/02/20 Javascript
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
2015/01/22 Javascript
png在IE6 下无法透明的解决方法汇总
2015/05/21 Javascript
JavaScript正则表达式的分组匹配详解
2016/02/13 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
2016/12/14 Javascript
WEB开发之注册页面验证码倒计时代码的实现
2016/12/15 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
2016/12/15 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
2016/12/30 Javascript
JS实现一个简单的日历
2017/02/22 Javascript
关于angularJs清除浏览器缓存的方法
2017/11/28 Javascript
vue better-scroll插件使用详解
2018/01/25 Javascript
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
微信小程序中转义字符的处理方法
2019/03/28 Javascript
简单了解JavaScript作用域
2020/07/31 Javascript
VsCode里的Vue模板的实现
2020/08/12 Javascript
vue实现点击出现操作弹出框的示例
2020/11/05 Javascript
[00:59]DOTA2背景故事第二期之四大基本法则
2020/07/07 DOTA
python使用fileinput模块实现逐行读取文件的方法
2015/04/29 Python
Python学习小技巧之列表项的排序
2017/05/20 Python
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
Python实现OpenCV的安装与使用示例
2018/03/30 Python
详解Python读取yaml文件多层菜单
2019/03/23 Python
Django自定义模板过滤器和标签的实现方法
2019/08/21 Python
python3 字符串知识点学习笔记
2020/02/08 Python
Django中的模型类设计及展示示例详解
2020/05/29 Python
自我鉴定写作要点
2014/01/17 职场文书
学术会议邀请函范文
2014/01/22 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
《小儿垂钓》教学反思
2014/02/23 职场文书
党员干部公开承诺书范文
2015/04/27 职场文书
爱国主义主题班会
2015/08/14 职场文书
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python
Python re.sub 反向引用的实现
2021/07/07 Python
MongoDB使用场景总结
2022/02/24 MongoDB