1

我正在尝试从谷歌驱动器恢复上传,当我关闭连接时我有文件的 ID 我在再次连接 Internet 后进行此会话:

var request = (HttpWebRequest)WebRequest.Create(fileUri);
            request.Method = "PUT";
            request.ContentLength = 0;
            request.Headers.Add("Content-Range", "bytes */" + FileByteArray.Length);
            try
            {
                var response = request.GetResponse();
            }
            catch (WebException e)
            {
               fileRange = e.Response.Headers.Get("Range");
            }

        }

我没有收到 Range 标头,这是为什么呢?

4

1 回答 1

2

Content-Range指示原始实体的哪个范围包含在请求(如您的PUT请求)或 206 部分响应的正文中。Range客户端而不是服务器设置以请求子范围。我会假设您正在与之交谈的服务器不会对上传的块进行响应,因此Content-Range(并且Range在任何情况下)都不会作为响应标头出现。

在您的代码片段中,缺少实际上传范围Content-Range(请参阅更新的 HTTP RFC)。它必须具有以下形式:

Content-Range: bytes 42-1233/1234

这意味着:上传总大小为 1234 字节的实体的字节 42-1233。

或者当完整长度未知时:

 Content-Range: bytes 42-1233/*

所以删除对Range标题的检查并指定完整的上传范围,你应该没问题。

于 2016-11-07T18:18:47.917 回答