4GB以上超大文件上傳和斷點續傳服務器的實現
隨着視頻網站和大數據應用的普及,特別是高清視頻和4K視頻應用的到來,超大文件上傳已經成為了日常的基礎應用需求。
但是在很多情況下,平台運營方並沒有大文件上傳和斷點續傳的開發經驗,往往在網上找一些簡單的PHP或者Java程序來實現基本的上傳功能,然而在實際使用中會發現,這些基於腳本語言實現的上傳功能模塊性能很弱,一是不支持2GB以上的內容上傳;二是無法支持斷點續傳;三是效率極低,單台服務器最多支持幾十個並發上傳連接。
當前我們要搭建一個運營級的視頻服務平台,在嘗試了各種產品均無法滿足要求,因此最后花精力自主用C++語言實現了這一高性能上傳服務器。
項目地址:
http://git://10.168.4.241/up6/web/asp.net.git
Hyper Upload Server 超級上傳服務器
這是一款超級文件上傳服務器,采用異步I/O架構,采用C++語言編碼實現。它支持4GB以上超大文件上傳和斷點續傳,支持Windows和Linux服務器平台,支持任意格式的文件上傳,尤其適合大的視頻網站應用。單台服務器支持1000並發上傳進程,支持PC端和智能手機端主流的瀏覽器。
主要特性
1. 服務器端采用異步I/O架設設計,具有高性能I/O處理能力,尤其適用於超大文件上傳;
2. 服務器端采用高效內存分配技術確保在運行過程中服務器的內存開銷最小化;
3. 完全采用標准協議實現,因此兼容幾乎所有的PC端和移動端瀏覽器;
4. 服務器端采用C++語言自主實現,對上傳文件的尺寸無限制,天生支持超大文件上傳。
而基於PHP、JAVA等技術實現的文件上傳服務天生無法支持超大文件上傳,無法逾越2GB的最大文件尺寸瓶頸;
5. 服務器端采用無緩沖即時寫入方式,上傳數據寫入一步到位。不同於PHP、JAVA等技術實現方式需要兩步寫入;
6. 服務器端可跨平台編譯運行,支持Windows和Linux平台;
7. 高性能,單台服務器支持1000個並發上傳進程;
8. 支持4GB以上超大文件上傳,文件大小不受限制;
9. 客戶端支持采用HTTP標准協議上傳;
10.支持斷點續傳,斷網、關機重啟均不受影響;
11.支持HTML5瀏覽器上傳進度實時顯示;
12.支持IE8及以上瀏覽器上傳進度顯示;
13.支持查看客戶端在線連接, 查看方法: http://ip:port/lists
14.多瀏覽器兼容,包括Chrome,Firefox,Safari,IE,Opera,Edge;
安裝
第一步:解壓文件到一個硬盤目錄,例如d:\UploadServer
第二步:修改配置文件
修改d:\UploadServer\conf\config.xml,文件里的目錄設置,
將所有 dir= 變量指向的目錄修改為硬盤上的真實目錄,如果沒有就按配置文件創建;
第三步:安裝服務
執行cmd打開命令行窗口按步驟輸入以下命令:
d: <br/>
cd UploadServer
HYFileServer.exe -i
第四步:啟動服務
打開系統的服務管理器,找到Hyper Http Upload Service服務啟動它。
第五步:在瀏覽器里輸入 http://127.0.0.1:8080 查看服務器運行是否正常
如果上傳頁面正常顯示說明安裝成功
點擊其中一個上傳文件鏈接 按鈕來上傳一個文件。
如果要在其它主機上訪問上傳服務器頁面,請將127.0.0.1用安裝服務器的IP地址取代。
如果外部機器還不能訪問,請檢查防火牆的設置,看一下默認的8080端口是否開啟。
第六步:如果要進一步了解上傳服務器,請查看 d:\UploadServer\doc\文件上傳服務器使用手冊.pdf 文件。
– Linux 下執行安裝
./hyupdsrv
如果要作為守護進程,執行
./hyupdsrv -d
詳細配置可以參考我寫的這篇文章:http://blog.ncmem.com/wordpress/2019/08/09/%e5%be%80%e6%9c%8d%e5%8a%a1%e5%99%a8%e4%b8%8a%e4%bc%a0%e5%a4%a7%e6%96%87%e4%bb%b6/
歡迎入群一起討論:374992201