服務器是否支持斷點續傳

一般狀況下,Web服務器(如Apache)會默認開啓對斷點續傳的支持。所以,若是直接經過Web服務器來提供文件的下載,能夠沒必要作特別的配置,便可享受到斷點續傳的好處。斷點續傳是在發起HTTP請求的時候加入RANGE頭來告訴服務器客戶端已經下載了多少字節。等全部這些請求都返回以後,再把獲得的內容一塊一塊的拼接起來獲得完整的資源。php

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

你能夠經過如下的命令來測試一下。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 ,說明服務器支持按字節下載。app

curl 命令發送字節範圍下載

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

這樣能夠到最開始99字節,結果以下圖:iphone

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

說明從服務器端按字節範圍下載是徹底沒有問題的。ide

如今咱們嘗試如下方式:函數

一、一次性下載整個圖片。測試

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 –:–:– –:–:– –:—:—  527kurl

完成後,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: "的值

相關文章
相關標籤/搜索