2013-10-02 109 views
0

在我開發的Web應用程序中,有一個選項供用戶通過瀏覽器下載大文件。這些文件可以存儲在不同的遠程存儲中,例如Amazon S3。如果文件下載花費了幾分鐘時間,那麼由於各種原因,在服務器端追蹤它的進度將會很方便。Nodejs多部分http下載

所以web應用程序和node.js API位於一個地方,文件可以位於任何地方。我在想的是通過node.js代理文件下載。因此,它看起來像 - >用戶單擊Web應用程序中的文件下載按鈕 - >節點向S3請求一個文件並將其流式傳輸給用戶,並隨着所發送的文件大小和數據已知,更新數據庫以跟蹤進度。

我想知道些什麼:

  1. 那是合理的在性能方面?數百個並行下載會不會殺死一般服務器?
  2. 如何處理與節點的多部分下載?
  3. 對這個問題有更好的解決方案嗎?

非常感謝您的回答!

回答

1

解決方案1 ​​:最好的方法是直接從您的服務器下載文件。這使您能夠觀察進展情況,進行全面控制並在需要時添加一些功能。您的下載性能取決於您的服務器上的

解決方案2:如果您不想存儲文件或者您不想提供文件,您可以提供指向遠程服務器文件的鏈接<a href="link_to_the_remote_file">link</a>。對於你的服務器,沒有影響,這很好。不過,你不能看到進展。

因此,無論您的服務器管理下載,無論是遠程服務器。兩者都有優點和缺點。 但是在你的服務器的情況下,你將需要解析文件。你可以使用一個模塊,但如果你想自己做(女巫​​更好),看看原生fsstream模塊和http protocol。 在另一種情況下,你不需要,你什麼都不做。

您的解決方案是:遠程服務器將文件提供給您的服務器,並向客戶端提供服務。 我從來沒有測試的時刻,但似乎你做了2件​​事:下載上傳。上面的解決方案最好是下載或上傳。