如果我們要實(shí)現(xiàn)http斷點(diǎn)續(xù)傳,關(guān)鍵地方就是在httprequest中加入“Range”頭。
比如說我們要上傳的文件大小是500 bytes焚廊。
那么我們應(yīng)該怎么去寫這個(gè)斷點(diǎn)續(xù)傳的問題呢!
//設(shè)置Range頭,值:bytes=x-y;x:開始字節(jié)猴仑,y:結(jié)束字節(jié),不指定則為文件末尾
// 這就是 我們的文件500bytes - 上傳的進(jìn)度 然后當(dāng)網(wǎng)絡(luò)連接的時(shí)候我們直接從這個(gè)位置開始繼續(xù)上傳肥哎!
[request addValue:@"bytes=500-" forHTTPHeaderField:@"Range"];
但是我們也會(huì)遇到一些不一樣的問題辽俗,如果我們的服務(wù)器支持我們斷點(diǎn)續(xù)傳,那就好辦篡诽。如果服務(wù)器不支持?jǐn)帱c(diǎn)續(xù)傳的話我們就需要另開途徑了
下面介紹一下Range:頭域
Range頭域可以請(qǐng)求實(shí)體的一個(gè)或者多個(gè)子范圍崖飘。
表示頭500個(gè)字節(jié):bytes=0-499
表示第二個(gè)500字節(jié):bytes=500-999
表示最后500個(gè)字節(jié):bytes=-500
表示500字節(jié)以后的范圍:bytes=500-
第一個(gè)和最后一個(gè)字節(jié):bytes=0-0,-1
同時(shí)指定幾個(gè)范圍:bytes=500-600,601-999
但是服務(wù)器可以忽略此請(qǐng)求頭,如果無條件GET包含Range請(qǐng)求頭霞捡,響應(yīng)會(huì)以狀態(tài)碼206(PartialContent)返回而不是以200(OK)坐漏。
注意:如果用戶的請(qǐng)求中含有range ,則服務(wù)器的相應(yīng)代碼為206碧信。
206 - Partial Content 客戶發(fā)送了一個(gè)帶有Range頭的GET請(qǐng)求赊琳,服務(wù)器完成了它(HTTP 1.1新)。