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 从数据库提取二进制图片的处理代码
Sep 09 PHP
PHP开启gzip页面压缩实例代码
Mar 11 PHP
PHP程序漏洞产生的原因分析与防范方法说明
Mar 06 PHP
php递归删除目录下的文件但保留的实例分享
May 10 PHP
php实现MySQL数据库备份与还原类实例
Dec 09 PHP
php在linux下检测mysql同步状态的方法
Jan 15 PHP
php中实现可以返回多个值的函数实例
Mar 21 PHP
递归实现php数组转xml的代码分享
May 14 PHP
PHP微信模板消息操作示例
Jun 29 PHP
PHP JWT初识及其简单示例
Oct 10 PHP
PHP中mysqli_get_server_version()的实例用法
Feb 03 PHP
PhpStorm连接服务器并实现自动上传功能
Dec 09 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/02/08 PHP
PHP中冒号、endif、endwhile、endfor使用介绍
2010/04/28 PHP
PHP中curl_setopt函数用法实例分析
2015/04/16 PHP
分享PHP守护进程类
2015/12/30 PHP
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
2010/06/28 Javascript
input:checkbox多选框实现单选效果跟radio一样
2014/06/16 Javascript
js判断文本框剩余可输入字数的方法
2015/02/04 Javascript
悬浮广告方法日常收集整理
2016/03/18 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
2018/05/16 jQuery
Vue Router的懒加载路径的解决方法
2018/06/21 Javascript
详解Java中String JSONObject JSONArray List转换
2020/11/13 Javascript
vue使用vant中的checkbox实现全选功能
2020/11/17 Vue.js
[48:30]LGD vs infamous Supermajor小组赛D组 BO3 第一场 6.3
2018/06/04 DOTA
python中定义结构体的方法
2013/03/04 Python
Python日志模块logging简介
2015/04/13 Python
在Python中处理字符串之isdigit()方法的使用
2015/05/18 Python
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
2015/10/18 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
2019/05/10 Python
python自制包并用pip免提交到pypi仅安装到本机【推荐】
2019/06/03 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
对YOLOv3模型调用时候的python接口详解
2019/08/26 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
2020/01/14 Python
CSS3制作炫酷带方向感应的鼠标滑过图片3D动画
2016/03/16 HTML / CSS
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
澳大利亚领先的折扣药房:Chemist Direct(有中文站)
2018/11/24 全球购物
传播学毕业生求职信
2013/10/11 职场文书
上课看小说检讨书
2014/02/22 职场文书
企业党员一句话承诺
2014/05/30 职场文书
乡镇干部个人对照检查材料思想汇报(原创篇)
2014/09/28 职场文书
购房协议书范本
2014/10/02 职场文书
财务部岗位职责范本
2015/04/14 职场文书
感恩教师节主题班会
2015/08/12 职场文书
导游词之珠海轮廓
2019/10/25 职场文书
Python的代理类实现,控制访问和修改属性的权限你都了解吗
2022/03/21 Python
vue实现可以快进后退的跑马灯组件
2022/04/08 Vue.js