Web Uploader + php視頻分片上傳

由于最近項目中遇到有做視頻上傳的功能,決定寫一篇文章詳細說明大文件上傳的原理和使用Baidu WebFE(FEX)團隊開發(fā)的文件上傳插件WebUploader。

大文件分片上傳原理

利用前端框架WebUploader配置進行對大文件的分片(由Baidu官方測試,每5M一個分片是效率最高的),這里,我的服務(wù)端是php,所以需要修改php.ini里面的post_max_size配置,默認是2M,我這里改的是8M。

服務(wù)端php接收分片,WebUploader插件會提供一個GUID,可以利用GUID加任意個性化信息做分片名(當然,分片序號需要加上),當所有分片上傳完畢后,調(diào)用合并請求,對分片進行合并即可。

上傳前,我會計算整個文件的MD5值到我們的資源庫去查找是否已有相同資源,如果有的話,直接文件共享即可。

Web Uploader基本配置

Web Uploaders配置

上傳前的文件驗證


對文件的驗證處理

PHP后臺處理

首先,我們需要創(chuàng)建對應(yīng)的文件夾


創(chuàng)建文件夾

因為項目需要,我這里創(chuàng)建了五個文件夾存放,分別是分片文件夾、源文件文件夾、視頻截圖的圖片文件夾、截取視頻的小視頻文件夾和轉(zhuǎn)碼后的視頻文件夾,因為對上傳的視頻做后續(xù)處理,如截圖、轉(zhuǎn)碼、生成小視頻,這里用到的是ffmpeg,如果有興趣的同學可以持續(xù)關(guān)注我,下一篇文章會寫關(guān)于ffmpeg的使用。

其實服務(wù)端做的事情相對比較簡單了,每上傳的分片寫到一個文件里去,最后把分片按照序號合并起來即可。

分片合并

分片的冗余處理

用戶上傳大文件的時候或多或少會有中斷,斷網(wǎng)的情況,這個時候服務(wù)器就會出現(xiàn)多的分片碎片,這個完全占用服務(wù)器存儲空間的,所以我們需要對這些所謂的垃圾文件做處理,我們可以設(shè)置碎片文件的過期時間,如果超過時間還存在的話,進行刪除,或者當天刪除前一天的分片文件夾也是可以的,這樣相對來說比較省事。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容