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('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";
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 = [ '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 ]);
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('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' => '视频上传出错' ]);
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['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' => '视频上传出错' ]);
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('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) { ... });
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
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!