开发者

Resume download of file in Silverlight 4 OOB

I have a Silverlight 4 out-of-browser application that needs to be able to resume the download of an external file if the download is interrupted for any reason. I would like to be able resume instead of restart from the beginning because the file will be rather large and we have the potential to have users on slower connections.

I found some code at,

http://www.codeproject.com/Tip开发者_StackOverflow社区s/157532/Silverlight-4-OOB-HTTP-Download-Component-with-Pau.aspx

but there seems to be numerous errors in it, so I'm not exactly confident that I'll be able to get it to work.

So, if anyone has any other original suggestions or alternatives, I'd like to hear them.

Thanks,


One approach you might consider is managing the download using the HTTP/1.1 Acccept-Ranges response header and the Range request header.

Make sure the resource you are downloading will include the header:-

Accept-Ranges: bytes

when it is requested (a static file sent by IIS will do this by default).

Now using the ClientHTTP stack you make an initial "HEAD" request to determine the server will accept a Range: bytes= header in the request and find the total size of the content to be sent.

You then make a "GET" request for the resource including the header:-

Range: bytes=0-65535

This limits the downloaded content to just the first 64K chunk. You then repeat the same request with:-

Range: bytes=65536-131071

Each time you can save the content of the response stream to your destination file. You keep track of how many bytes you have received. When you determine the final chunk which is likely to less than full just use a header like:-

Range: bytes=131072-

That will read to the end of file.

If the requests to the server are fail you can resume at an appropriate point in this sequence.

You need to be degrade gracefully, if the server does not include the Accept-Ranges header in the initial "HEAD" request then you'll just have to download the whole file.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜