2009-10-18 106 views
2

嗨,我正在創建網上商店。在此shope人在線必須購買帶有zip擴展名的文件。他們用自己的信用卡或其他方式獲得鑰匙並下載產品。我怎樣才能知道他們何時完成產品下載? 謝謝如何知道何時下載完成

+0

您可以檢測到它們觸發了下載,但是如果它們完成了下載,則不會。除非有人反對,否則我很樂意知道。 – 2009-10-18 09:10:09

回答

2

可惜的是沒有真正這樣做,因爲有些客戶可能無法下載文件一次(例如Downloadmanagers拆分下載分成幾個部分parralel下載)好辦法。

選項包括:

  • 如果這對你很重要的,它只能下載一次:你可以簡單地 不支持恢復。然後,你可以 (只要最後一個字節 已發送)日誌,如果該文件完全被 下載。如果下載量很小,這可能效果不錯。
  • 否則你可以提供一些優雅 數據(我們通常允許下載 客戶端下載5倍大小的實際下載的 ),並記錄每個 下載嘗試。

您不應該只計算下載的字節數(因爲下載可能會中斷)。而且不只是確定是否所有章節已被下載一次(也是因爲下載可能會中斷)

只是爲了澄清:這一切都意味着你必須寫自己的下載處理程序(文件服務器)。

0

您可以使用自定義文件服務器在http或ftp上工作,並讓客戶端收到最後一個文件片段後發送通知。

所有其他選項都有問題;客戶端可能會使用下載管理器下載文件,因此如果有任何瀏覽器事件,您甚至無法註冊。

+0

顯然你的回答要求自定義文件服務器不支持恢復。 – Foxfire 2009-10-18 09:45:20

0

自定義服務器應用程序似乎確實是一個解決方案, 或可能某種腳本。

一個正常的HTTP服務器不通知的連接, 結束,但有可能,如果您生成的CGI/PHP/ASP/*腳本輸出, 您閱讀CGI文件/ PHP/ASP/*腳本語言和 發送到輸出。當您到達文件末尾時,您會通過 執行通知,然後結束腳本。

當你這樣做,它只會檢測到完全下載的文件, ,如果連接中途中斷,它不會標記 該文件被下載。

一個「CGI腳本」可以是編譯的C程序,(或就此而言的任何其他的langauge )。無論如何編譯代碼。編譯的程序 將會提供更好的性能,然後解釋腳本解決方案。

相關問題