Heim  >  Artikel  >  Backend-Entwicklung  >  Beispielfreigabe eines Weiterleitungs-Uploads und eines Callback-Uploads für die PHP-Anwendung Qiniu Cloud

Beispielfreigabe eines Weiterleitungs-Uploads und eines Callback-Uploads für die PHP-Anwendung Qiniu Cloud

*文
*文Original
2017-12-22 13:17:573358Durchsuche

In tatsächlichen Projekten, die durch Serverkapazität und Bandbreite begrenzt sind, erfordert das Hochladen von Ressourcen häufig die Verwendung von Objektspeicherdiensten von Drittanbietern. Zu den gängigeren Dienstanbietern in China gehören Qiniu Cloud, Alibaba usw. In diesem Artikel wird anhand von Qiniu Cloud erläutert, wie Benutzervideos in den Bereich von Dienstanbietern wie Qiniu Cloud hochgeladen werden.

Es gibt zwei Haupttypen des Qiniu Cloud-Uploads:

Serverseitiger Upload

Front-End-Upload, und das Front-End verfügt über zwei Rückgabemethoden:

1) Die Weiterleitungsrückgabe kann das domänenübergreifende Ajax-Problem lösen

2). Methode, die keine Umleitung unterstützt, wie z. B. Mini-Programm-Upload


Dieses Mal habe ich Qiniu Cloud PHP SDK verwendet

composer require qiniu/php-sdk

Diesmal habe ich das verwendet kindeditor-Editor.

Fügen Sie config.php unter Kindeditor/php hinzu, hauptsächlich um Parameter zu konfigurieren

<?php
error_reporting(0);
 
defined(&#39;ROOT_PATH&#39;) || define(&#39;ROOT_PATH&#39;, dirname(__DIR__).&#39;/&#39;);
defined(&#39;QINIU_ACCESS_KEY&#39;) || define(&#39;QINIU_ACCESS_KEY&#39;, &#39;&#39;);
defined(&#39;QINIU_SECRET_KEY&#39;) || define(&#39;QINIU_SECRET_KEY&#39;, &#39;&#39;);
defined(&#39;QINIU_TEST_BUCKET&#39;) || define(&#39;QINIU_TEST_BUCKET&#39;, &#39;七牛云空间名&#39;);
defined(&#39;QINIU_BUCKET_DOMAIN&#39;) || define(&#39;QINIU_BUCKET_DOMAIN&#39;, &#39;七牛云空间网址&#39;);
 
defined(&#39;CALLBACK_URL&#39;) || define(&#39;CALLBACK_URL&#39;, &#39;域名/kindeditor/php/callBack.php&#39;);
defined(&#39;RETURN_URL&#39;) || define(&#39;RETURN_URL&#39;, &#39;域名/kindeditor/php/returnBack.php&#39;);
 
require_once ROOT_PATH."vendor/autoload.php";

 

Fügen Sie qiniu_token.php unter Kindeditor/php hinzu, hauptsächlich um Token zum Hochladen zu generieren

<?php
use Qiniu\Auth;
 
require_once __DIR__."/config.php";
 
// 构建鉴权对象
$auth = new Auth(QINIU_ACCESS_KEY, QINIU_SECRET_KEY);
 
$data = [
    &#39;returnUrl&#39; => RETURN_URL,
];
if (isset($_REQUEST[&#39;is_call&#39;])) {
   $data = [
      &#39;callbackUrl&#39; => CALLBACK_URL,
      &#39;callbackBody&#39; => &#39;key=$(key)&hash=$(etag)&w=$(imageInfo.width)&h=$(imageInfo.height)&#39;
   ];
}
// 生成上传 Token
$token = $auth->uploadToken(QINIU_TEST_BUCKET, null, 3600, $data);
 
echo json_encode([
   &#39;error&#39; => 0,
   &#39;token&#39; => $token
]);


callBack.php unter Kindeditor/php hinzufügen, hauptsächlich um zurückzurufen

<?php
use Qiniu\Auth;
 
require_once __DIR__."/config.php";
$_body = file_get_contents(&#39;php://input&#39;);
$auth = new Auth(QINIU_ACCESS_KEY, QINIU_SECRET_KEY);
//回调的contentType
$contentType = &#39;application/x-www-form-urlencoded&#39;;
//回调的签名信息,可以验证该回调是否来自七牛
$authorization = $_SERVER[&#39;HTTP_AUTHORIZATION&#39;];
$isQiniuCallback = $auth->verifyCallback($contentType, $authorization, CALLBACK_URL, $_body);
if (!$isQiniuCallback) {
    echo json_encode([
        &#39;error&#39; => 2,
        &#39;message&#39; => &#39;验证失败&#39;
    ]);
    die();
}
 
$body = $_POST;
$qiniu_url = QINIU_BUCKET_DOMAIN;
if (!empty($body[&#39;key&#39;])) {
    echo json_encode([
        &#39;error&#39; => 0,
        &#39;url&#39; => $qiniu_url.$body[&#39;key&#39;]
    ]);
    die();
}
echo json_encode([
    &#39;error&#39; => 1,
    &#39;message&#39; => &#39;视频上传出错&#39;
]);


returnBack hinzufügen. php unter Kindeditor/php, hauptsächlich um die Empfangsadresse umzuleiten

<?php
use Qiniu\Auth;
 
require_once __DIR__."/config.php";
$upload_ret = base64_decode($_GET[&#39;upload_ret&#39;]);
$upload_ret = json_decode($upload_ret, true);
$qiniu_url = QINIU_BUCKET_DOMAIN;
if (!empty($upload_ret[&#39;key&#39;])) {
    echo json_encode([
        &#39;error&#39; => 0,
        &#39;url&#39; => $qiniu_url.$upload_ret[&#39;key&#39;]
    ]);
    die();
}
echo json_encode([
    &#39;error&#39; => 1,
    &#39;message&#39; => &#39;视频上传出错&#39;
]);


Der nächste Schritt ist die Frontend-Änderung, was ich geändert habe, ist das Hochladen von Videos

Kindeditor/plugins/media/media.js

KindEditor.plugin(&#39;media&#39;, function(K) {
    var self = this, name = &#39;media&#39;, lang = self.lang(name + &#39;.&#39;),
        allowMediaUpload = K.undef(self.allowMediaUpload, true),
        allowFileManager = K.undef(self.allowFileManager, false),
        formatUploadUrl = K.undef(self.formatUploadUrl, true),
        extraParams = K.undef(self.extraFileUploadParams, {
            &#39;token&#39;: &#39;&#39;//添加token
        }),
        filePostName = K.undef(self.filePostName, &#39;file&#39;), //更改文件上传名
        uploadJson = K.undef(self.uploadJson, &#39;https://up.qbox.me&#39;); //更改上传地址,我用的时华东区的空间使用https
 
         
        ....
 
            function getQToken() {
                $.getJSON(&#39;/includes/kindeditor/php/qiniu_token.php&#39;, function (data) {
                    K(&#39;[name="token"]&#39;, div).val(data.token);
                });
            }
                        // 获取设置上传token
            getQToken();
 
            if (allowMediaUpload) {
                var uploadbutton = K.uploadbutton({
                    button : K(&#39;.ke-upload-button&#39;, div)[0],
                    fieldName : filePostName,
                    extraParams : extraParams,
                    url : uploadJson,//去除添加参数
                    afterUpload : function(data) {
            ...
});

 

Auf diese Weise können Sie Videos in die Qiniu Cloud hochladen.


Verwandte Empfehlungen:

So verbinden Sie das WeChat-Applet mit der Qiniu Cloud Storage-Instanz

Einführung in Beispiele für das Hochladen von Bildern in Laravel mit Qiniu Cloud

yii2.0 oss Beispielcode


Das obige ist der detaillierte Inhalt vonBeispielfreigabe eines Weiterleitungs-Uploads und eines Callback-Uploads für die PHP-Anwendung Qiniu Cloud. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn