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的图形函数中显示汉字
Oct 09 PHP
php intval的测试代码发现问题
Jul 27 PHP
php 无限级缓存的类的扩展
Mar 16 PHP
php 静态变量的初始化
Nov 15 PHP
深入PHP数据加密详解
Jun 18 PHP
PHP 验证码不显示只有一个小红叉的解决方法
Sep 30 PHP
php实现memcache缓存示例讲解
Dec 04 PHP
PHP类的反射用法实例
Nov 03 PHP
php 利用socket发送HTTP请求(GET,POST)
Aug 24 PHP
深入浅析用PHP实现MVC
Mar 02 PHP
yii2.0实现pathinfo的形式访问的配置方法
Apr 06 PHP
Laravel Eloquent ORM 多条件查询的例子
Oct 10 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
兼容PHP5的PHP目录管理函数库
2008/07/10 PHP
无JS,完全php面向过程数据分页实现代码
2012/08/27 PHP
PHP递归创建多级目录
2015/11/05 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
Yii框架函数简单用法分析
2019/09/09 PHP
js中的window.open返回object的错误的解决方法
2009/08/15 Javascript
新发现一个骗链接的方法(js读取cookies)
2012/01/11 Javascript
js获得地址栏?问号后参数的方法
2013/08/08 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
2016/04/26 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
2017/08/28 Javascript
vue下拉菜单组件(含搜索)的实现代码
2018/11/25 Javascript
详解使用React制作一个模态框
2019/03/14 Javascript
如何使用Jquery动态生成二级选项列表
2020/02/06 jQuery
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
vue中重定向redirect:‘/index‘,不显示问题、跳转出错的完美解决
2020/09/28 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
2020/11/17 Vue.js
浅谈es6中的元编程
2020/12/01 Javascript
[14:19]2018年度COSER大赛-完美盛典
2018/12/16 DOTA
举例讲解Linux系统下Python调用系统Shell的方法
2015/11/07 Python
Python简单实现自动删除目录下空文件夹的方法
2017/08/29 Python
Python这样操作能存储100多万行的xlsx文件
2019/04/16 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
django框架使用orm实现批量更新数据的方法
2019/06/21 Python
深入了解Python枚举类型的相关知识
2019/07/09 Python
Python 中的pygame安装与配置教程详解
2020/02/10 Python
Python通过4种方式实现进程数据通信
2020/03/12 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
2020/10/15 Python
CSS3中的注音对齐属性ruby-align用法指南
2016/07/01 HTML / CSS
中海讯通笔试题
2015/09/15 面试题
消防安全检查制度
2014/02/04 职场文书
公务员政审单位鉴定材料
2014/05/16 职场文书
感恩母亲节活动总结
2015/02/10 职场文书
文案策划岗位职责
2015/02/11 职场文书
孩子满月酒答谢词
2015/09/30 职场文书
护理自荐信
2019/05/14 职场文书