服務器是否支持斷點續傳


通常情況下,Web服務器(如Apache)會默認開啟對斷點續傳的支持。因此,如果直接通過Web服務器來提供文件的下載,可以不必做特別的配置,即可享受到斷點續傳的好處。斷點續傳是在發起HTTP請求的時候加入RANGE頭來告訴服務器客戶端已經下載了多少字節。等所有這些請求都返回之后,再把得到的內容一塊一塊的拼接起來得到完整的資源。

Resumable download file Web服務器(如Apache)默認開啟斷點續傳

你可以通過以下的命令來測試一下。

Linux 測試服務器是否支持斷點續傳

localhost [~]# wget -S http://httpd.apache.org/images/httpd_logo_wide_new.png 2>&1 | grep ‘Accept-Ranges’ 
  Accept-Ranges: bytes

輸出結果 Accept-Ranges: bytes ,說明服務器支持按字節下載。

curl 命令發送字節范圍下載

curl –range 0-99 http://images.apple.com/home/images/billboard_iphone_hero.jpg

這樣可以到最開始99字節,結果如下圖:

curl range bytes request curl 命令發送字節范圍請求

說明從服務器端按字節范圍下載是完全沒有問題的。

現在我們嘗試以下方式:

1、一次性下載整個圖片。

localhost [~]# curl –range 0-98315 http://images.apple.com/home/images/billboard_iphone_hero.jpg > test.jpg 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current 
                                 Dload  Upload   Total   Spent    Left  Speed 
100 98316  100 98316    0     0   524k      0 –:–:– –:–:– –:—:—  527k

完成后,test.jpg完全等於billboard_iphone_hero.jpg,文件大小為98,316 字節。

注意:字節是從0開始,結束字節為總字節長度 減 1。

 判斷是否支持斷點續傳,其實是判斷是否支持文件指針移動。在FTP中用REST 100測試,在HTTP中用CInternetFile的Seek函數測試,如果成功則支持斷點續傳。

ftp:
send command:
"REST 1\r\n"
回復"350 Restarting at 1. Send STORE or RETRIEVE to initiate transfer."則支持
HTTP:
在HTTP header里面加上 "RANGE: bytes=13750-\r\n"
然后檢查返回頭的"Content-Range: "的值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM