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 socket(fsockopen)的应用实例分析
Jun 02 PHP
探讨如何在PHP开启gzip页面压缩实例
Jun 09 PHP
Codeigniter操作数据库表的优化写法总结
Jun 12 PHP
PHP中单引号与双引号的区别分析
Aug 19 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
Sep 29 PHP
android上传图片到PHP的过程详解
Aug 03 PHP
PHP使用redis实现统计缓存mysql压力的方法
Nov 14 PHP
YII Framework教程之异常处理详解
Mar 14 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
Mar 10 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
Oct 13 PHP
PHP中cookie知识点学习
May 06 PHP
thinkPHP5框架路由常用知识点汇总
Sep 15 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中 $$str 中 &quot;$$&quot; 的详解
2015/07/06 PHP
PHP实现的memcache环形队列类实例
2015/07/28 PHP
PHP常用技巧汇总
2016/03/04 PHP
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
2009/12/28 Javascript
Js sort排序使用方法
2011/10/17 Javascript
IE8下String的Trim()方法失效的解决方法
2013/11/08 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
jQuery实现模仿微博下拉滚动条加载数据效果
2015/12/25 Javascript
微信公众号 摇一摇周边功能开发
2016/12/08 Javascript
React组件生命周期详解
2017/07/03 Javascript
vue-cli之router基本使用方法详解
2017/10/17 Javascript
vuejs简单验证码功能完整示例
2019/01/08 Javascript
vue将data恢复到初始状态 &amp;&amp; 重新渲染组件实例
2020/09/04 Javascript
python求crc32值的方法
2014/10/05 Python
Python的Django框架中从url中捕捉文本的方法
2015/07/20 Python
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
用Pygal绘制直方图代码示例
2017/12/07 Python
Python基于opencv实现的简单画板功能示例
2019/03/04 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
利用Python的sympy包求解一元三次方程示例
2019/11/22 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
HTML5是什么 HTML5是什么意思 HTML5简介
2012/10/26 HTML / CSS
美国二手奢侈品寄售网站:TheRealReal
2016/10/29 全球购物
某公司Java工程师面试题笔试题
2016/03/27 面试题
remote接口和home接口主要作用
2013/05/15 面试题
介绍下Lucene建立索引的过程
2016/03/02 面试题
高中学生干部学习的自我评价
2014/02/21 职场文书
水利局群众路线专题民主生活会发言材料
2014/09/21 职场文书
山东省召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2014年度个人工作总结范文
2015/03/09 职场文书
保研导师推荐信
2015/03/25 职场文书
2015年测量员工作总结
2015/05/23 职场文书
MySQL 存储过程的优缺点分析
2021/05/20 MySQL
html form表单基础入门案例讲解
2021/07/21 HTML / CSS
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python