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 Header用于页面跳转要注意的几个问题总结
Oct 03 PHP
joomla内置的表单验证功能使用方法
Jun 11 PHP
对PHP新手的一些建议(PHP学习经验总结)
Aug 20 PHP
ThinkPHP实现二级循环读取的方法
Nov 03 PHP
codeigniter显示所有脚本执行时间的方法
Mar 21 PHP
PHP实现在线阅读PDF文件的方法
Jun 17 PHP
mysql alter table命令修改表结构实例详解
Sep 24 PHP
ThinkPHP 模板substr的截取字符串函数详解
Jan 09 PHP
PHP解决中文乱码
Apr 28 PHP
laravel-admin 在列表页添加自定义按钮的例子
Sep 30 PHP
基于PHP的微信公众号的开发流程详解
Aug 07 PHP
PHP正则表达式之RCEService回溯
Apr 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
超外差式晶体管收音机的组装与统调
2021/03/01 无线电
收音机术语解释
2021/03/01 无线电
Zend Studio 实用快捷键一览表(精心整理)
2013/08/10 PHP
php实现只保留mysql中最新1000条记录
2015/06/18 PHP
Javascript 面向对象 继承
2010/05/13 Javascript
Javascript学习笔记二 之 变量
2010/12/15 Javascript
jQuery插件 selectToSelect使用方法
2013/10/02 Javascript
javascript 回到顶部效果的实现代码
2014/02/17 Javascript
jquery实现拖拽调整Div大小
2015/01/30 Javascript
基于JavaScript实现文字超出部分隐藏
2016/02/29 Javascript
对象不支持indexOf属性或方法的解决方法(必看)
2017/05/28 Javascript
jQuery实现的事件绑定功能基本示例
2017/10/11 jQuery
webpack搭建vue 项目的步骤
2017/12/27 Javascript
使用JavaScript生成罗马字符的实例代码
2018/06/08 Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
2018/11/19 Javascript
详解vuex的简单todolist例子
2019/07/14 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
JavaScript 链表定义与使用方法示例
2020/04/28 Javascript
vue实现在线学生录入系统
2020/05/30 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
[57:28]2018DOTA2亚洲邀请赛 4.6 淘汰赛 TNC vs Liquid 第一场
2018/04/10 DOTA
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
2018/01/26 Python
Python中max函数用于二维列表的实例
2018/04/03 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
2019/08/15 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
Python 实现一个手机号码获取妹子名字的功能
2019/09/25 Python
Python实现像awk一样分割字符串
2020/09/15 Python
python中pop()函数的语法与实例
2020/12/01 Python
Python实现一个论文下载器的过程
2021/01/18 Python
微信小程序实现可实时改变转速的css3旋转动画实例代码
2018/09/11 HTML / CSS
怎样写好自我鉴定
2013/12/04 职场文书
工作态度检讨书
2014/02/11 职场文书
广场舞大赛策划方案
2014/05/31 职场文书
药品销售员2015年终工作总结
2015/10/22 职场文书
高中美术教学反思
2016/02/17 职场文书
劳务派遣管理制度(样本)
2019/08/23 职场文书