2009-08-26 32 views
9

Tôi muốn biết liệu có cách nào để biết liệu máy chủ có hỗ trợ chức năng tải xuống tiếp tục và nếu được hỗ trợ, làm cách nào để gửi yêu cầu tiếp tục?HttpWebRequest hoặc WebRequest - Tiếp tục Tải xuống ASP.NET

Tôi đang tìm một giải pháp mà trang ASP.NET của tôi có thể tải xuống từ máy chủ đến máy chủ, chẳng hạn như "rapidleech", nhưng tôi muốn kiểm tra xem máy chủ có đang yêu cầu không tải xuống hỗ trợ chức năng tiếp tục.

Trả lời

24

Việc khôi phục tệp được thực hiện bằng cách chỉ định phạm vi byte của tệp bạn muốn tải xuống bằng cách sử dụng tiêu đề HTTP Range. Điều này có thể được thực hiện bằng .NET với hàm HttpWebRequest.AddRange.

Ví dụ:

request.AddRange(1000); 

Will tell máy chủ để bắt đầu gửi tại byte thứ 1000 của tập tin.

Nếu máy chủ hỗ trợ tiêu đề Phạm vi, nó sẽ gửi nội dung có trạng thái HTTP là 206 (Nội dung một phần) thay vì 200 (OK) bình thường. Xem số HTTP Spec.

Để kiểm tra xem máy chủ có hỗ trợ khôi phục trước khi thử tải xuống hay không, hãy thay đổi "HEAD" của HttpWebRequest. Máy chủ sẽ trả về 206 (một phần nội dung) nếu nó hỗ trợ nối lại, và 200 (OK) nếu nó không hoạt động.

+0

vì vậy, nếu máy chủ không hỗ trợ, nó sẽ gửi 200 bình thường không? – Cleiton

+0

Có. Theo thông số HTTP, máy chủ sẽ gửi 200 thông thường với tất cả nội dung nếu nó không hỗ trợ dải ô. Bạn cũng có thể kiểm tra những gì máy chủ được chỉ định trong tiêu đề "Chấp nhận phạm vi" trong lần tải xuống đầu tiên của bạn để xem nó có hỗ trợ gửi phạm vi hay không (phải là "byte" hoặc "không"). Tiêu đề này không bắt buộc, vì vậy nếu không có tiêu đề "Chấp nhận phạm vi", nó có thể chấp nhận phạm vi. –

+0

@Adam, cảm ơn rất nhiều! – Cleiton

2

Bạn có thể tìm thêm thông tin về các yêu cầu Phạm vi cụ thể theo số Scott Mitchell here

+0

@Neil, cảm ơn vì liên kết tuyệt vời này – Cleiton

Các vấn đề liên quan