首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何指定如果一个文件的内容长度大于本地副本,或者该文件已被修改,则如何指定该文件应被获取?

如何指定如果一个文件的内容长度大于本地副本,或者该文件已被修改,则如何指定该文件应被获取?
EN

Stack Overflow用户
提问于 2013-02-12 20:43:07
回答 1查看 247关注 0票数 0

我知道如何发出这样的请求:“只有在某个特定日期后文件已被修改时,才能获取该文件”。

代码语言:javascript
运行
复制
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();
    ...

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

自上次写入以来,本地文件不会被修改,但是当上次从服务器下载它时,文件是不完整的。换句话说,本地文件中的内容长度与服务器上文件中的内容长度不一样。

因此,如果服务器上的内容长度与本地计算机上的内容长度不同,那么我想指定应该从服务器获取文件。

我该怎么做?

EN

回答 1

Stack Overflow用户

发布于 2013-02-12 23:43:06

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

代码语言:javascript
运行
复制
        string length = response.Headers[HttpResponseHeader.ContentLength];

因此,您将从一开始就知道这个文件应该有多长。如果它太短,那么它是不完整的,你需要再次下载。

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

代码语言:javascript
运行
复制
        string md5 = response.Headers[HttpResponseHeader.ContentMd5];

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

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

检查标头字段定义HTTP标头字段,看看您的选项是什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14841444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档