我們知道,在以前,文件上傳采用的是直接傳整個文件的方式,這種方式對付一些小文件是沒有問題的。而當需要上傳大文件時,此種方式不僅操作繁瑣,需要修改web服務器和后端語言的配置,而且會大量占用服務器的內存,導致服務器內存吃緊,嚴重的甚至傳輸超時或文件過大無法上傳。很顯然,普通的文件上傳方式已無法滿足現在越來越高的要求。
隨着技術的發展,如今我們可以利用HTML5的分塊上傳技術來輕松解決這個困擾,通過將大文件分割成小塊逐個上傳再拼合,來降低服務器內存的占用,突破服務器及后端語言配置中的上傳大小限制,可上傳任意大小的文件,同時也簡化了操作,提供了直觀的進度顯示。
AetherUpload-Laravel是一個提供超大文件上傳的Laravel擴展包,支持分組配置、斷線續傳、秒傳、分布式部署等功能,簡單易用,滿足多數人的主流需求。無感知化的設計理念,可實現由擴展自動接管上傳和訪問請求,開發者專注於業務,無需關心上傳流程,無需編寫適配代碼,幾乎開箱即用,節省大量開發時間。
主要功能特性有:百分比進度條、文件類型和大小限制、分組配置 、自定義中間件、上傳完成事件 、同步上傳、斷線續傳、文件秒傳、分布式部署。
解析一下上傳過程,首先發送預處理請求preprocess,用以檢查是否可秒傳,進行文件大小和類型的過濾,預創建指針頭文件和資源文件。然后發送上傳分塊請求uploading,開始文件分塊上傳流程,同時開始合並文件,直到最后一個分塊上傳完畢后,返回完整文件的保存地址,並將此文件加入秒傳記錄中。
安裝過程相當簡單,無需任何額外配置,僅需30秒時間就可以使你的應用支持超大文件上傳。
秒傳示例:
在終端內切換到你的laravel項目根目錄,執行composer require peinhu/aetherupload-laravel ~2.0
(Laravel 5.5+請跳過)在config/app.php的providers數組中添加一行AetherUpload\AetherUploadServiceProvider::class,
執行php artisan aetherupload:publish來發布一些文件和目錄
在瀏覽器訪問http://域名/aetherupload可到達示例頁面