隨著網(wǎng)路技術(shù)的不斷發(fā)展,雲(yún)端儲(chǔ)存的應(yīng)用越來(lái)越廣泛,尤其是視訊網(wǎng)站、音訊網(wǎng)站,這些網(wǎng)站為用戶提供的是線上觀看或線上收聽(tīng),而這一切的背後則是雲(yún)端存儲(chǔ)技術(shù)的支撐。七牛雲(yún)端儲(chǔ)存作為國(guó)內(nèi)領(lǐng)先的雲(yún)端儲(chǔ)存服務(wù)商,在網(wǎng)路產(chǎn)業(yè)擁有廣泛的應(yīng)用,尤其是在多媒體上傳、儲(chǔ)存、加速和分發(fā)等方面,都有著不錯(cuò)的表現(xiàn)。那麼,在本文中,我們將以ThinkPHP為例,介紹七牛雲(yún)端儲(chǔ)存的上傳和轉(zhuǎn)碼功能。
一、什麼是ThinkPHP
ThinkPHP是一個(gè)由中國(guó)開(kāi)發(fā)者創(chuàng)立的免費(fèi)開(kāi)源的PHP框架,其透過(guò)簡(jiǎn)單的配置和封裝,讓開(kāi)發(fā)人員可以快速的進(jìn)行應(yīng)用程式開(kāi)發(fā)。 ThinkPHP充分考慮了Web開(kāi)發(fā)的實(shí)際需求,並大力整合了開(kāi)源社群中的優(yōu)秀作品,充分滿足了Web開(kāi)發(fā)人員的需求。
二、什麼是七牛雲(yún)端儲(chǔ)存
七牛雲(yún)端存儲(chǔ),是一家快速、簡(jiǎn)單的雲(yún)端儲(chǔ)存服務(wù)供應(yīng)商,專(zhuān)注於為用戶提供可靠、高效、安全的雲(yún)端存儲(chǔ)服務(wù)。七牛雲(yún)端儲(chǔ)存可以提供多媒體文件的儲(chǔ)存、管理和分發(fā)服務(wù),用戶只需要向七牛雲(yún)端儲(chǔ)存上傳自己的多媒體文件,就可以透過(guò)七牛的CDN進(jìn)行加速,讓用戶能夠更快、更流暢的訪問(wèn)這些文件。
三、ThinkPHP如何實(shí)現(xiàn)七牛雲(yún)存儲(chǔ)的上傳
在ThinkPHP框架下使用七牛雲(yún)存儲(chǔ)的上傳功能,首先需要在項(xiàng)目下引入鑑權(quán)類(lèi)以及七牛雲(yún)存儲(chǔ)SDK,處理上傳時(shí)鑑權(quán)資訊:
require_once('Auth.php'); require_once('Config.php'); require_once('autoload.php');//引入七牛SDK $accessKey?=?'可以從七牛后臺(tái)獲得'; $secretKey?=?'可以從七牛后臺(tái)獲得'; //鑒權(quán)對(duì)象 $auth?=?new?Auth($accessKey,?$secretKey);?? //生成上傳Token $bucket?=?'要上傳的bucket名稱';//bucket名稱 $key?=?'要生成的文件名';//文件名稱 $options['returnBody']?=?'{"name":?$(fname),?"size":?$(fsize),?"hash":?$(etag),?"url":?"http://example.com/$(key)"}';//要返回的信息 $policy?=?array( ????'returnBody'??????=>??json_encode($options['returnBody']),//返回給客戶端的信息 ????'saveKey'?????????=>??$key,//上傳的文件名 ); $upToken?=?$auth->uploadToken($bucket,?null,?3600,?$policy);//生成上傳Token
之後,在頁(yè)面中使用七牛雲(yún)端儲(chǔ)存的Javascript SDK,實(shí)作選擇檔案、上傳功能:
<script src="http://cdn.staticfile.org/plupload/2.1.1/plupload.full.min.js"></script> <script type="text/javascript"> ????//設(shè)置上傳參數(shù) ????var?uploader?=?new?plupload.Uploader({ ????????browse_button:?'browse',?//觸發(fā)選擇文件對(duì)話框的按鈕 ????????url:?'http://upload.qiniup.com/',?//服務(wù)器端的上傳頁(yè)面地址 ????????flash_swf_url:?'path/of/plupload/Moxie.swf',//swf文件,用于解決跨域或不支持xhr2的瀏覽器上傳問(wèn)題 ????????silverlight_xap_url:?'path/of/plupload/Moxie.xap',//silverlight文件,用于解決跨域或不支持xhr2的瀏覽器上傳問(wèn)題 ????????chunk_size:?'4mb',//分塊上傳的塊大小 ????????multi_selection:?false,//是否支持多選 ????????filters:?{ ????????????max_file_size:?'10mb',//最大文件大小 ????????????mime_types:?[ ??????????????{title:?"Image?files",?extensions:?"jpg,gif,png,jpeg,webp"}, ??????????????{title:?"Video?files",?extensions:?"avi,mp4,mkv,flv,mov"}, ??????????????{title:?"Audio?files",?extensions:?"mp3,wma,ogg,wav"}, ????????????]//上傳文件類(lèi)型限制 ????????}, ????????multipart:?true,//是否將文件分塊上傳 ????????multipart_params:?{//通常只能上傳原始二進(jìn)制文件到流中,而文件的信息必須存在于HTTP請(qǐng)求的上下文中 ????????????key:?'文件名稱', ????????????token:?'{$uptoken}', ????????} ????}); ????//綁定觸發(fā)上傳的事件 ????uploader.bind('FilesAdded',?function(up,?files)?{ ???????uploader.start();//當(dāng)文件被添加到上傳隊(duì)列后開(kāi)始上傳流程 ????}); ????//綁定上傳過(guò)程的事件 ????uploader.bind('UploadProgress',?function(up,?file)?{ ????????var?percent?=?file.percent; ????}); ????//綁定上傳成功的事件 ????uploader.bind('FileUploaded',?function(up,?file,?info)?{ ????????var?result?=?JSON.parse(info.response); ????????console.log(result.url);//獲取上傳成功后的文件鏈接 ????}); ????//綁定上傳失敗的事件 ????uploader.bind('Error',?function(up,?err)?{ ????????if(err.code==-601){//文件格式不符合 ???????????console.log('上傳失敗:文件格式不符合要求'); ????????}else?if(err.code==-200){//文件太大 ???????????console.log('上傳失?。何募笮〕鱿拗?); ????????}else{ ???????????console.log(err.message);//其他失敗信息 ????????} ????}); ????//啟動(dòng)上傳 ????uploader.init(); </script>
四、ThinkPHP如何使用七牛雲(yún)儲(chǔ)存的轉(zhuǎn)碼功能
對(duì)於一些影片網(wǎng)站、音訊網(wǎng)站等,使用者上傳的音訊視訊檔案往往需要進(jìn)行轉(zhuǎn)碼處理,使其符合網(wǎng)站的要求,這時(shí)候,就需要使用到七牛雲(yún)儲(chǔ)存的轉(zhuǎn)碼功能了,它可以自動(dòng)進(jìn)行音視頻轉(zhuǎn)碼,並且生成各種格式的播放鏈接,方便用戶在線觀看或在線收聽(tīng)。在ThinkPHP框架下,使用七牛雲(yún)端儲(chǔ)存的轉(zhuǎn)碼功能需要安裝composer包,使用composer安裝:
composer?require?qiniu/php-sdk
安裝完成後,可以透過(guò)PHP SDK來(lái)實(shí)現(xiàn)音訊轉(zhuǎn)碼,具體的轉(zhuǎn)碼操作可以參考:
require?__DIR__?.?'/vendor/autoload.php'; use?Qiniu\Auth; use?Qiniu\Storage\BucketManager; use?Qiniu\Storage\UploadManager; $accessKey?=?'your?accessKey'; $secretKey?=?'your?secretKey'; //鑒權(quán)對(duì)象 $auth?=?new?Auth($accessKey,?$secretKey); //空間名稱 $bucket?=?'your?bucket'; //文件保存鍵名 $key?=?'your?key'; //上傳文件的本地路徑 $filePath?=?'your?filepath'; //上傳的轉(zhuǎn)碼參數(shù) $pfop?=?"avthumb/mp4"; //對(duì)于使用自己私有的codec庫(kù)時(shí)需要制定so路徑,?在<SoSdkPath>中填入so文件路徑。其他情況則沒(méi)必要,?該參數(shù)可以不填。 $encoding_codec_lib_path?=?null; $urlbase64?=?\Qiniu\base64_urlSafeEncode($bucket?.?':'?.?$key); //設(shè)置回調(diào)的URL地址 $notifyUrl?=?'http://yourdomain.com/callback.php'; //轉(zhuǎn)碼完成后回調(diào)指向的地址 $fops?=?$pfop.?'|saveas/'?.?\Qiniu\base64_urlSafeEncode("$bucket:$key")?.?'|notifyURL/'?.?$notifyUrl; //初始化BucketManager $config?=?new?\SDK\Qiniu\Config(); $config->zone?=?new?\SDK\Qiniu\Zone\Zhuanqu(); $bucketManager?=?new?BucketManager($auth,?$config); //調(diào)用fetch方法拉取網(wǎng)絡(luò)上的一個(gè)資源,該資源用于轉(zhuǎn)碼,該方式不支持本地音視頻文件的轉(zhuǎn)碼處理 $fetchResult?=?$bucketManager->fetch($url,?$bucket,?$key,?$pfop); if($fetchResult?!=?null){ ????//上傳流程 ????$uploadMgr?=?new?UploadManager($config); ????list($ret,?$err)?=?$uploadMgr->putFile($token,?$key,?$filePath?,null,$encoding_codec_lib_path); ????if?($err?!==?null)?{ ????????echo?'上傳失?。?,?$err->message(),?"\n"; ????}?else?{ ????????echo?'上傳成功:',?$ret['key'],?"\n"; ????????//持久化處理并等待處理結(jié)果 ????????$persistentOps?=?$fops;//音視頻持久化處理的詳細(xì)指令,多個(gè)指令用;隔開(kāi) ????????$pipeline?=?'';//進(jìn)行轉(zhuǎn)碼的隊(duì)列名稱,不傳此參數(shù)將使用默認(rèn)隊(duì)列 ????????$force?=?true;//強(qiáng)制覆蓋已有的同名文件 ????????//調(diào)用持久化處理接口實(shí)現(xiàn)音視頻轉(zhuǎn)碼等持久化操作(不支持本地音視頻文件的轉(zhuǎn)碼處理)。 ????????list($ret,?$err)?=?$bucketManager->persistentFop($bucket,?$key,?$persistentOps,?$pipeline,?$force); ????????if?($err?!==?null)?{ ????????????var_dump($err); ????????}?else?{ ????????????var_dump($ret); ????????} ????} }
五、結(jié)語(yǔ)
希望透過(guò)本文的介紹,大家可以更深入了解到七牛雲(yún)儲(chǔ)存的上傳和轉(zhuǎn)碼功能,並且在ThinkPHP框架下實(shí)現(xiàn)七牛雲(yún)端儲(chǔ)存的上傳和轉(zhuǎn)碼操作。學(xué)習(xí)一門(mén)知識(shí),只有不斷實(shí)踐和總結(jié),才能真正的掌握和運(yùn)用自如。
以上是ThinkPHP如何實(shí)現(xiàn)七牛雲(yún)端儲(chǔ)存的上傳與轉(zhuǎn)碼功能的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門(mén)文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)