0

我知道如何提出“仅当文件自特定日期以来已被修改时才获取文件”的请求。

HttpWebRequest request = (HttpWebRequest) WebRequest.create(url);
request.IfModifiedSince = lastWriteTime; // lastWriteTime is the time when 
                                         // the local file was last written.

try
 {
    HttpWebResponse response = (HttpWebResponse) request.GetResponse();
    ...

但是,假设发生这种情况 -

本地文件自上次写入后没有修改,但上次从服务器下载时,文件不完整。换句话说,本地文件中的内容长度与服务器上文件中的内容长度不同。

所以我想指定应该从服务器获取文件,如果服务器上的内容长度与本地机器上的内容长度不同。

我怎样才能做到这一点?

4

1 回答 1

1

对于您的场景并且仅使用 HTTP,我将检查文件长度标头:

        string length = response.Headers[HttpResponseHeader.ContentLength];

所以你会从一开始就知道这个文件应该有什么长度。如果太短则不完整,您需要重新下载。

如果您更关心文件的内容,您还可以查看 MD5:

        string md5 = response.Headers[HttpResponseHeader.ContentMd5];

如果您坚持请求条件,您可以尝试 HTTP 标头If-Range。W3C 将其描述为:

... 非正式地,它的意思是`如果实体没有改变,把我丢失的部分发给我;否则,把整个新实体发给我”。...

检查标头字段定义HTTP 标头字段以查看您的选项。

于 2013-02-12T23:43:06.740 回答