upload大檔案 用戶端,該如何解決

來源:互聯網
上載者:User
upload大檔案 用戶端
想請教下,各位都用什麼來實現檔案上傳? 需要web用戶端,能大檔案上傳,如果是ftp或其他協議需要能夠在上傳結束後通知http伺服器端,或者至少伺服器端能有prepost events
如果是http上傳需要能夠支援chunk,希望是html5或flash的解決方案,不要java applet或者javaFx
即便是付費的不要像aspera那樣的貴東西
最主要的是能很好的上傳大檔案,大檔案是指最大到上100G的檔案,

伺服器端如果能有php的script最好
我試過的有jquery file upload 和plupload

分享到: 更多


------解決方案--------------------
建議使用flash+php來實現,有第三方類庫
------解決方案--------------------
引用:
想請教下,各位都用什麼來實現檔案上傳? 需要web用戶端,能大檔案上傳,如果是ftp或其他協議需要能夠在上傳結束後通知http伺服器端,或者至少伺服器端能有prepost events
如果是http上傳需要能夠支援chunk,希望是html5或flash的解決方案,不要java applet或者javaFx
即便是付費的不要像aspera那樣的貴東西
最主要的是能……
傳統的HTML方式已經難已滿足超大檔案的上傳。別說是100MB,50MB對伺服器來說都是非常大的,服務不僅要專門開一個socket串連接一直等待這個檔案上傳完畢,還要分配同等大小的記憶體來儲存這個檔案對伺服器造成的壓力相當的大,而且這個壓力將會隨著使用者的增加而成幾何式的增加。就算是用Flash也不行,因為目前的Flash不支援斷點續傳操作,也不支援檔案分塊操作,Flash和傳統的HTML方式上傳原理一樣。用Flash上傳100MB圖片,伺服器也要分配100MB的記憶體。10個使用者同時上傳100MB資料的話,就要吃掉伺服器1G的記憶體。
Flash上傳時是將整個檔案加截到記憶體中的,這是比較嚴重的問題。因為如果使用者要上傳5G的檔案,Flash也會將5G檔案全部載入到記憶體中。這樣會嚴重影響使用者的操作體驗。因為這時使用者的電腦會處於假死狀態。一般使用者電腦也就2G,所以直接掛掉,記憶體不足,或記憶體溢出。

有些朋友試過用Flash檔案上傳控制項來上傳超大檔案,但是經常遇到上傳逾時,或上傳出錯的問題。這是因為現在的Flash檔案上傳控制項使用的技術還是和傳統的HTML方式上傳一樣。讓伺服器開啟一個串連,然後一直等到用戶端把這個檔案傳完。但是在實際的網路環境中,使用者的網速可能只有50KB/S,上傳200MB的檔案可能要花2.8小時。但是伺服器的SESSION串連不可能為使用者等2.8個小時,這還不考慮複雜的網路環境,比如資料包丟失的情況。如果遇到資料包丟失和網路異常的情況,那使用者前面的100MB檔案是白傳了。這相當於浪費了使用者一個小時的時間。給使用者帶來了極差的體驗。
對於伺服器來講,串連資源是非常有限的,就算伺服器能夠為一個使用者等2.8個小時,如果使用者訪問一大,每一個使用者都佔用一個串連並且佔用這麼長時間,那麼伺服器的並發處理能力就變的非常低了。其它的使用者就算是請求一個簡單的1KB的HTML頁面也必須等伺服器處理完前面的使用者的請求。

同時Flash也無法滿足超大檔案的上傳需求。因為超大檔案上傳需求有一個要求就是要保證資料轉送的穩定性。比如使用者上傳1G的檔案,已經上傳了500MB,這時網突然斷了,但是使用者希望下次傳這個檔案的時侯是從最後一次上傳的位置開始傳輸,也就是從500MB的位置開始傳輸,這一個需求是Flash是無法做到的。

像QQ郵箱中的超大附件上傳功能,115網盤中的超大附件上傳控制項,華為網盤(DBank),金山快盤他們都是使用控制項來實現超大檔案上傳功能的。這樣做主要是減輕伺服器壓力(伺服器回應時間更快,並發處理能力更強),節省伺服器記憶體(伺服器不必為每個使用者都分配與檔案同等大小的記憶體),同時提高使用者體驗(使用者可在複雜的網路環境中上傳超大檔案)。

當然從技術角度來講,像這些互連網知名企業也是考慮了支撐海量使用者的分布式檔案儲存體構架設計。因為他們的檔案儲存體伺服器不可能是一台,而且會動態隨著使用者數的增加而增加。

如果真如部分朋友所說的Flash控制項就能解決超大檔案上傳的問題,那麼騰迅也不會花那麼大的力氣專門為QQ郵箱開發一個控制項了。
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.