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 相关文章推荐
修改Zend引擎实现PHP源码加密的原理及实践
Apr 14 PHP
写出高质量的PHP程序
Feb 04 PHP
php配合jquery实现增删操作具体实例
Dec 12 PHP
Yii 快速,安全,专业的PHP框架
Sep 03 PHP
PHP多个文件上传到服务器实例
Oct 29 PHP
PHP自动重命名文件实现方法
Nov 04 PHP
php获取四位字母和数字的随机数的实现方法
Jan 09 PHP
php通过array_shift()函数移除数组第一个元素的方法
Mar 18 PHP
PHP并发多进程处理利器Gearman使用介绍
May 16 PHP
CI框架支持$_GET的两种实现方法
May 18 PHP
php创建图像具体步骤
Mar 13 PHP
利用php-cli和任务计划实现刷新token功能的方法
May 03 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 静态化实现代码
2009/03/20 PHP
PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
2009/10/22 PHP
PHP中使用CURL伪造来路抓取页面或文件
2011/05/04 PHP
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
php中使用key,value,current,next和prev函数遍历数组的方法
2015/03/17 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
PHP实现支持CURL字符串证书传输的方法
2019/03/23 PHP
JQueryEasyUI datagrid框架的进阶使用
2013/04/08 Javascript
JQuery+Ajax无刷新分页的实例代码
2014/02/08 Javascript
禁用Tab键JS代码兼容Firefox和IE
2014/04/18 Javascript
JavaScript事件委托技术实例分析
2015/02/06 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
2015/03/04 Javascript
在JavaScript中操作时间之setYear()方法的使用
2015/06/12 Javascript
jquery实现select选择框内容左右移动代码分享
2015/11/21 Javascript
AngularJS 日期格式化详解
2015/12/23 Javascript
Angular.js自动化测试之protractor详解
2017/07/07 Javascript
Vue项目全局配置页面缓存之按需读取缓存的实现详解
2018/08/01 Javascript
Vue实现数据请求拦截
2019/10/23 Javascript
使用python分析git log日志示例
2014/02/27 Python
python装饰器decorator介绍
2014/11/21 Python
Python函数可变参数定义及其参数传递方式实例详解
2015/05/25 Python
python实现合并两个排序的链表
2019/03/03 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
浅谈pandas.cut与pandas.qcut的使用方法及区别
2020/03/03 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
python 实现&quot;神经衰弱&quot;翻牌游戏
2020/11/09 Python
英国第一家领先的在线处方眼镜零售商:Glasses Direct
2018/02/23 全球购物
银河香水:Galaxy Perfume
2019/03/25 全球购物
超级英雄、电影和电视、乐队和音乐T恤:Loud Clothing
2019/09/01 全球购物
电子信息工程专业求职信
2014/06/28 职场文书
2015年银行大堂经理工作总结
2015/04/24 职场文书
公司年夜饭通知
2015/04/25 职场文书
停发工资证明范本
2015/06/12 职场文书
html+css实现分层金字塔的实例
2021/06/02 HTML / CSS
MySQL分区表实现按月份归类
2021/11/01 MySQL