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验证码(支持中文)
Feb 14 PHP
php SQL防注入代码集合
Apr 25 PHP
PHP与MySQL开发的8个技巧小结
Dec 17 PHP
PHP中最容易忘记的一些知识点总结
Apr 28 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
Jun 24 PHP
PHP调用wsdl文件类型的接口代码分享
Nov 19 PHP
完美利用Yii2微信后台开发的系列总结
Jul 18 PHP
Yii2框架中日志的使用方法分析
May 22 PHP
PHP基于Closure类创建匿名函数的方法详解
Aug 17 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
ThinkPHP5+UEditor图片上传到阿里云对象存储OSS功能示例
Aug 05 PHP
Yii框架模拟组件调用注入示例
Nov 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
php防攻击代码升级版
2010/12/29 PHP
php单例模式示例分享
2015/02/12 PHP
php+ajax实现无刷新动态加载数据技术
2015/04/28 PHP
PHP Yaf框架的简单安装使用教程(推荐)
2016/06/08 PHP
用CSS+JS实现的进度条效果效果
2007/06/05 Javascript
跨域表单提交状态的变相判断代码
2009/11/12 Javascript
Jquery 表单验证类介绍与实例
2013/06/09 Javascript
javascript中expression的用法整理
2014/05/13 Javascript
JQuery调用绑定click事件的3种写法
2015/03/28 Javascript
JavaScript获取网页支持表单字符集的方法
2015/04/02 Javascript
jQuery超酷平面式时钟效果代码分享
2020/03/30 Javascript
jQuery通过改变input的type属性实现密码显示隐藏切换功能
2017/02/08 Javascript
vue内置指令详解
2018/04/03 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
跟老齐学Python之集成开发环境(IDE)
2014/09/12 Python
python模拟Django框架实例
2016/05/17 Python
python取代netcat过程分析
2018/02/10 Python
python使用turtle绘制分形树
2018/06/22 Python
python twilio模块实现发送手机短信功能
2019/08/02 Python
Django media static外部访问Django中的图片设置教程
2020/04/07 Python
Keras 快速解决OOM超内存的问题
2020/06/11 Python
Ubuntu16安装Python3.9的实现步骤
2020/12/15 Python
英国儿童家具专卖店:GLTC
2016/09/24 全球购物
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
个人简历自我鉴定
2013/10/11 职场文书
劳资员岗位职责
2013/11/11 职场文书
司机岗位职责
2013/11/15 职场文书
运动会入场解说词300字
2014/01/25 职场文书
2014年村官工作总结
2014/11/24 职场文书
2015年基层党组织公开承诺书
2015/01/21 职场文书
紫日观后感
2015/06/05 职场文书
家庭教育教师培训学习体会
2016/01/14 职场文书
68句权威创业名言
2019/08/26 职场文书
Python装饰器的练习题
2021/11/23 Python
Nginx安装配置详解
2022/06/25 Servers