C# http斷點(diǎn)續(xù)傳下載源碼
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
在C#中實(shí)現(xiàn)HTTP斷點(diǎn)續(xù)傳通常需要客戶端支持Range請(qǐng)求頭,以便請(qǐng)求下載文件的特定部分。以下是一個(gè)簡(jiǎn)單的示例,展示了如何使用HttpClient發(fā)送Range請(qǐng)求以實(shí)現(xiàn)斷點(diǎn)續(xù)傳: using System; using System.IO; using System.Net.Http; using System.Threading.Tasks;
class Program { static async Task Main(string[] args) { string url = "http://example.com/large-file.zip"; // 替換為你要下載的文件URL string destinationPath = "downloaded-file.zip"; // 替換為你的目標(biāo)文件路徑
using (HttpClient httpClient = new HttpClient()) { // 獲取文件大小 HttpResponseMessage response = await httpClient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead); response.EnsureSuccessStatusCode(); long fileLength = response.Content.Headers.ContentLength.Value;
// 打開(kāi)文件用于追加寫(xiě)入 using (FileStream fileStream = new FileStream(destinationPath, FileMode.OpenOrCreate, FileAccess.Write)) { // 定位到文件末尾 fileStream.Seek(0, SeekOrigin.End);
// 設(shè)置Range頭部,從文件末尾開(kāi)始 HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, url); request.Headers.Range = new RangeHeaderValue(fileStream.Length, fileLength - 1);
// 發(fā)送Range請(qǐng)求 response = await httpClient.SendAsync(request); response.EnsureSuccessStatusCode();
// 將響應(yīng)內(nèi)容寫(xiě)入文件 await response.Content.CopyToAsync(fileStream); } } } } 這段代碼首先通過(guò)HttpClient獲取文件大小,然后打開(kāi)目標(biāo)文件用于追加寫(xiě)入。之后,它設(shè)置了Range頭部,指定從文件當(dāng)前長(zhǎng)度開(kāi)始下載,并將下載的內(nèi)容寫(xiě)入文件。這樣可以實(shí)現(xiàn)從上次中斷的地方繼續(xù)下載文件,實(shí)現(xiàn)斷點(diǎn)續(xù)傳。 提示:AI自動(dòng)生成,僅供參考。 該文章在 2024/3/12 23:53:06 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |