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通过iconv将字符串从GBK转换为UTF8字符集
Jul 18 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
Nov 02 PHP
用PHP实现Ftp用户的在线管理
Feb 16 PHP
PHP获取用户的浏览器与操作系统信息的代码
Sep 04 PHP
PHP 动态生成静态HTML页面示例代码
Jan 15 PHP
PHP微框架Dispatch简介
Jun 12 PHP
php文件缓存类汇总
Nov 21 PHP
php获取远程文件内容的函数
Nov 02 PHP
教你在header中隐藏php的版本信息
Aug 10 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
PHP调用全国天气预报数据接口查询天气示例
Feb 20 PHP
Laravel框架集合用法实例浅析
May 14 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
ubuntu 编译安装php 5.3.3+memcache的方法
2010/08/05 PHP
Trying to clone an uncloneable object of class Imagic的解决方法
2012/01/11 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
2013/06/29 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
2014/10/13 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
2019/10/14 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
jQuery新闻滚动插件 jquery.roller.js
2011/06/27 Javascript
基于jquery实现漂亮的动态信息提示效果
2011/08/02 Javascript
jQuery中对节点进行操作的相关介绍
2013/04/16 Javascript
jQuery动态添加、删除元素的方法
2014/01/09 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
js(JavaScript)实现TAB标签切换效果的简单实例
2014/02/26 Javascript
jquery衣服颜色选取插件效果代码分享
2015/08/28 Javascript
第一次接触神奇的Bootstrap网格系统
2016/07/27 Javascript
JSP防止网页刷新重复提交数据的几种方法
2016/11/19 Javascript
bootstrap导航条实现代码
2016/12/28 Javascript
javascript 注释代码的几种方法总结
2017/01/04 Javascript
javascript阻止事件冒泡和浏览器的默认行为
2017/01/21 Javascript
Vuejs监听vuex中值的变化的方法示例
2018/12/02 Javascript
Layer.js实现表格溢出内容省略号显示,悬停显示全部的方法
2019/09/16 Javascript
JS实现随机抽选获奖者
2019/11/07 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
Python中logging模块的用法实例
2014/09/29 Python
Python 比较两个数组的元素的异同方法
2017/08/17 Python
Python实现操纵控制windows注册表的方法分析
2019/05/24 Python
matplotlib交互式数据光标实现(mplcursors)
2021/01/13 Python
基于HTML5 audio元素播放声音jQuery小插件
2011/05/11 HTML / CSS
利用html5的websocket实现websocket聊天室
2013/12/12 HTML / CSS
药学专业个人的自我评价
2013/12/31 职场文书
售后服务经理岗位职责范本
2014/02/22 职场文书
经理任命书模板
2014/06/06 职场文书
优秀员工评优方案
2014/06/13 职场文书
班组长如何制订适合本班组的工作计划?
2019/07/10 职场文书
Mac环境Nginx配置和访问本地静态资源的实现
2021/03/31 Servers
在Oracle表中进行关键词搜索的过程
2022/06/10 Oracle