Dans les projets réels, limités par la capacité du serveur et la bande passante, le téléchargement de ressources nécessite souvent l'utilisation de services de stockage d'objets tiers. Les fournisseurs de services les plus courants en Chine incluent Qiniu Cloud, Alibaba, etc. Cet article utilise Qiniu Cloud comme exemple pour expliquer comment télécharger les vidéos des utilisateurs sur l'espace de fournisseurs de services tels que Qiniu Cloud.
Il existe deux principaux types de téléchargement Qiniu Cloud :
Téléchargement côté serveur
Téléchargement frontal, et le front-end a deux méthodes de retour :
1). Le retour de redirection peut résoudre le problème inter-domaines ajax
2). Retour de rappel, Qiniu Cloud renvoie d'abord les données au serveur, puis Qiniu Cloud revient au front-end pour résoudre la demande. méthode qui ne prend pas en charge la redirection, telle que le téléchargement de mini-programmes
Cette fois, j'ai utilisé le SDK Qiniu Cloud PHP
composer require qiniu/php-sdk
Cette fois, j'ai utilisé le éditeur kindeditor.
Ajoutez config.php sous Kindeditor/php, principalement pour configurer les paramètres
<?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";
Ajoutez qiniu_token.php sous Kindeditor/php, principalement pour générer un jeton pour le téléchargement
<?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 ]);
Ajoutez callBack.php sous Kindeditor/php principalement pour rappeler
<?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' => '视频上传出错' ]);
Ajoutez returnBack. php sous Kindeditor/php, principalement pour rediriger l'adresse de réception
<?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' => '视频上传出错' ]);
La prochaine étape est le changement frontal, ce que j'ai changé, c'est le téléchargement de vidéos
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) { ... });
De cette façon, vous pouvez télécharger des vidéos sur Qiniu Cloud.
Recommandations associées :
Comment connecter l'applet WeChat à l'instance Qiniu Cloud Storage
Introduction aux exemples de téléchargement d'images dans Laravel à l'aide de Qiniu Cloud
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!