文件传输一致性

BITS 保证它传输的文件版本根据文件大小和时间戳(而不是内容)保持一致(BITS 不会防范中间人攻击)。 若要自行验证内容,可以使用 IBackgroundCopyFile3::GetTemporaryName 方法获取包含下载内容的文件的名称,使用自己的机制验证内容,然后调用 IBackgroundCopyFile3::SetValidationState 方法,以指示文件内容是否有效时对 BITS。 如果将验证状态设置为 FALSE 并且内容来自源服务器,则作业进入错误状态。 如果内容来自对等方,则 BITS 将从源服务器下载文件。

对于下载,如果在 BITS 传输文件时文件大小或时间戳发生更改,BITS 将仅重启该文件的传输。 例如,如果下载作业包含两个文件,并且文件在 BITS 传输第二个文件时在服务器上更新,则 BITS 仅重启第二个文件的传输。 第一个已成功传输的文件不会更新以反映新更改。

请注意,如果拥有从服务器下载的文件,则应为每个新版本的文件创建新的 URL。 如果对文件的新版本使用相同的 URL,某些代理服务器可能会从其缓存中提供过时数据,因为它们在文件过期时不会与原始服务器进行验证。

对于上传,如果在文件传输过程中文件大小或时间戳发生更改,则 BITS 将生成错误,并且作业处于BG_JOB_STATE_ERROR状态。

当一个或多个用户请求将同一文件传输到同一位置时,BITS 不会同步传输请求。 BITS 单独传输每个请求的文件。