我正在使用WebClient对象(从服务器到客户端)下载文件:
WebClient wc = new WebClient();
wc.OpenReadCompleted += Load_TransferCompleted;
wc.OpenReadAsync(uriAddress, Filename);
我想在开始下载操作之前知道文件大小。有没有办法在SL4中执行此操作?
感谢您的帮助。
吉拉德。
答案 0 :(得分:1)
以下是您可以使用的一些空气密码(我自己没有测试过)
WebRequest req = WebRequestCreator.ClientHttp.Create(yourUri);
req.Method = "HEAD";
req.BeginGetResponse(ar =>
{
WebResponse resp = req.EndGetResponse(ar);
int length = resp.ContentLength;
// Do stuff with length
}, null);
通过使用ClientHttp
堆栈,您可以使用“HEAD”请求,该请求将返回与“GET”相同的标头集,但不返回实际的实体主体。
但至少有一件事要注意,uri的现有cookie都不会在请求中发送。如果响应对cookie敏感(例如因为它需要会话ID),那么事情会变得更加复杂。
答案 1 :(得分:0)
我认为实现这一目标的唯一方法是发布尺寸。它可以编码,但也可以通过网络服务获得。