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 相关文章推荐
用 PHP5 轻松解析 XML
Dec 04 PHP
关于PHP实现异步操作的研究
Feb 03 PHP
解析php框架codeigniter中如何使用框架的session
Jun 24 PHP
Memcached常用命令以及使用说明详解
Jun 27 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
Dec 24 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
Mar 05 PHP
非常实用的php验证码类
May 15 PHP
php 无限分类 树形数据格式化代码
Oct 11 PHP
PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
Apr 20 PHP
php扩展开发入门demo示例
Sep 23 PHP
PHP autoload使用方法及步骤详解
Sep 05 PHP
Laravel的加密解密与哈希实例讲解
Mar 24 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生成静态页
2006/11/25 PHP
PHP 木马攻击防御技巧
2009/06/13 PHP
供参考的 php 学习提高路线分享
2011/10/23 PHP
windows7下php开发环境搭建图文教程
2015/01/06 PHP
js左侧多级菜单动态的解决方案
2010/02/01 Javascript
javascript作用域容易记错的两个地方分析
2012/06/22 Javascript
图片翻转效果具体实现代码
2014/01/09 Javascript
js实现弹出窗口、页面变成灰色并不可操作的例子分享
2014/05/10 Javascript
js使用循环清空某个div中的input标签值
2014/09/29 Javascript
javascript实现复选框选中属性
2015/03/25 Javascript
jQuery Ztree行政地区树状展示(点击加载)
2016/11/09 Javascript
Angular动态添加、删除输入框并计算值实例代码
2017/03/29 Javascript
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
bootstrap-Treeview实现级联勾选
2017/11/23 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
2018/03/07 Javascript
JavaScript创建、读取和删除cookie
2019/09/03 Javascript
python列表操作实例
2015/01/14 Python
Python下Fabric的简单部署方法
2015/07/14 Python
Python实现的文本编辑器功能示例
2017/06/30 Python
Centos7 Python3下安装scrapy的详细步骤
2018/03/15 Python
python实现关键词提取的示例讲解
2018/04/28 Python
Python分割指定页数的pdf文件方法
2018/10/26 Python
python里dict变成list实例方法
2019/06/26 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
python 实现检验33品种数据是否是正态分布
2019/12/09 Python
Python交互环境下打印和输入函数的实例内容
2020/02/16 Python
Python TestSuite生成测试报告过程解析
2020/07/23 Python
Nebula美国官网:便携式投影仪
2019/03/15 全球购物
全球最受追捧的运动服品牌领先数字目的地:Stylerunner
2020/11/25 全球购物
关于圣诞节的广播稿
2014/01/26 职场文书
学校周年庆活动方案
2014/08/22 职场文书
个人剖析材料范文
2014/09/30 职场文书
Golang表示枚举类型的详细讲解
2021/09/04 Golang
mongodb清除连接和日志的正确方法分享
2021/09/15 MongoDB
Java 多线程并发FutureTask
2022/06/28 Java/Android
WIN10使用IIS部署ftp服务器详细教程
2022/08/05 Servers