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中cookie的作用域
Mar 27 PHP
在PHP中使用模板的方法
May 24 PHP
PHP5.3.1 不再支持ISAPI
Jan 08 PHP
php页面消耗内存过大的处理办法
Mar 18 PHP
解析php中的fopen()函数用打开文件模式说明
Jun 20 PHP
PHP判断变量是否为0的方法
Feb 08 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
Sep 04 PHP
thinkphp3.2.0 setInc方法 源码全面解析
Jan 29 PHP
php依赖注入知识点详解
Sep 23 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
Oct 16 PHP
Laravel5.1框架路由分组用法实例分析
Jan 04 PHP
如何利用PHP实现上传图片功能详解
Sep 24 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设置images目录不充许http访问的方法
2016/11/01 PHP
php调用云片网接口发送短信的实现方法
2017/10/25 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
laravel实现简单用户权限的示例代码
2019/05/28 PHP
表单内同名元素的控制
2006/11/22 Javascript
限制文本框输入N个字符的js代码
2010/05/13 Javascript
jQuery学习笔记之Helloworld
2010/12/22 Javascript
超级简单的jquery操作表格方法
2014/12/15 Javascript
仿JQuery输写高效JSLite代码的一些技巧
2015/01/13 Javascript
AngularJS控制器之间的通信方式详解
2016/11/03 Javascript
详解angularjs 关于ui-router分层使用
2017/06/12 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
javascript实现固定侧边栏
2021/02/09 Javascript
python如何在列表、字典中筛选数据
2018/03/19 Python
Python向MySQL批量插数据的实例讲解
2018/03/31 Python
在unittest中使用 logging 模块记录测试数据的方法
2018/11/30 Python
python绘制漏斗图步骤详解
2019/03/04 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
HTML的form表单和django的form表单
2019/07/25 Python
python中bs4.BeautifulSoup的基本用法
2019/07/27 Python
使用Python爬虫库requests发送表单数据和JSON数据
2020/01/25 Python
Django实现从数据库中获取到的数据转换为dict
2020/03/27 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
2020/06/11 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
2020/06/18 Python
python对execl 处理操作代码
2020/06/22 Python
opencv python 对指针仪表读数识别的两种方式
2021/01/14 Python
澳大利亚厨房和家用电器购物网站:Bing Lee
2021/01/11 全球购物
《雕塑之美》教学反思
2014/04/24 职场文书
大学生优秀班干部事迹材料
2014/05/26 职场文书
伦敦奥运会口号
2014/06/13 职场文书
电气工程及其自动化专业求职信
2014/06/23 职场文书
学校政风行风评议工作总结
2014/10/21 职场文书
刑事附带民事诉讼答辩状
2015/05/22 职场文书
超市主管竞聘书
2015/09/15 职场文书
Python基础之pandas数据合并
2021/04/27 Python
Spring依赖注入多种类型数据的示例代码
2022/03/31 Java/Android