我正在尝试从谷歌驱动器恢复上传,当我关闭连接时,我有文件的ID我在互联网再次连接后进行此会话:
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标头,为什么会这样?
答案 0 :(得分:1)
Content-Range
表示原始实体的哪个范围包含在请求(如PUT
请求)或206部分响应的正文中。 {em>客户端而不是服务器设置Range
以请求子范围。我假设您正在与之交谈的服务器不会响应上传的块,因此Content-Range
(在任何情况下都不会Range
)将不会作为响应标头出现。
在您的代码段中,Content-Range
缺少实际的上传范围(请参阅updated HTTP RFC)。它必须具有以下形式:
Content-Range: bytes 42-1233/1234
表示:上传总大小为1234字节的实体的字节42-1233。
或者当完整长度未知时:
Content-Range: bytes 42-1233/*
因此,请删除Range
标题的检查并指定完整的上传范围,您应该没问题。