我想寫一些HTML/JS代碼,這將有助於將大文件(多GB)上傳到遠程服務器。之前我們一直在使用一個flash上傳器,它可以在一個網絡請求中上傳給定的文件。閃存會打開一個網絡連接,將一塊文件讀入內存,然後將該塊寫入網絡連接,然後抓取下一塊,然後寫入網絡等等,直到整個文件上傳。這是通過這種方式完成的,因爲大多數Web瀏覽器會嘗試在嘗試上傳之前將整個文件讀入內存。在處理多GB文件時,這會使客戶端系統崩潰,因爲它使用所有客戶端內存。現在我們遇到了使用閃存的問題,所以需要繼續,我們希望替換它而不需要修改現有的服務器端代碼。如何在單個連接中以Javascript上傳大文件?
幾個谷歌搜索jquery上傳顯示,有很多庫支持「分塊」,但他們「塊」在多個請求。我們不想在多個網絡請求中分塊文件,我們只想讓JS在將文件寫入單個網絡連接時以塊讀取文件。
任何人都知道一個可以開箱即可完成此任務的圖書館嗎?
如果需要,我們不反對修改現有的庫。任何人都有一段類似於我可能能夠改裝成圖書館的波紋僞代碼片段?
connection = fopen(...);
fputs("123", connection);
... some unrelated code ...
fputs("456", connection);
fclose(connection);
(原諒我用僞JS代碼使用的C函數...我知道這是不是你的JS做到這一點,我只是展示在低層次的我要如何寫流到關閉之前的網絡連接)
注意:我們是不是要「現代化」或徹底改善這個項目 - 我們是不是要重新做這個項目。我們有一些已經坐在這裏多年的舊代碼,我們希望儘可能少地改變服務器端代碼。我有更重要的項目要實現現代化並提高效率 - 我們只需要工作。請不要勸我impliment「正確」的文件分塊在服務器端 - 這是我的建議,如果我的建議採取那麼任務將被分配到不同的開發商。現在不在我的控制之下,請僅使用客戶端修復程序!
謝謝,對不起任何頭痛!
如果你想要一個單一的連接,嘗試使用網絡套接字和傳輸塊 – juvian 2014-10-06 19:25:08