2014-11-18 7 views
0

Я пытаюсь загрузить файл с помощью openstack sdk из файлов rackspace. Если файл уже существует, я хочу использовать заголовок диапазона, чтобы продолжить запись, где он остановился. Согласно их documentation это может быть выполнено. openstack sdk documentation говорит, что я могу установить заголовок диапазона. Вот мой код:OpenStack SDK GetObjectSaveToFile Заголовки

Dictionary<string, string> headers = new Dictionary<string,string>(); 
     if (File.Exists(@"C:\path\to\file.zip")) 
     { 
      long iExistLen = 0; 
      System.IO.FileInfo fINfo = 
       new System.IO.FileInfo(@"C:\path\to\file.zip"); 
      iExistLen = fINfo.Length; 

      headers.Add("Range", "bytes="+iExistLen+"-"); 
     } 

     CloudIdentity cloudIdentity = new CloudIdentity() 
     { 
      APIKey = apikey, 
      Username = username 
     }; 

     CloudFilesProvider cloudFilesProvider = new CloudFilesProvider(cloudIdentity); 
     cloudFilesProvider.GetObjectSaveToFile(containerName, @"C:\path\to\", fileName, "file.zip", 65536, headers); 

Когда я запускаю это я получаю следующее сообщение об ошибке:

The 'Range' header must be modified using the appropriate property or method. 

Любая помощь приветствуется.

Спасибо.

ответ

0

Некоторые распространенные заголовки считаются ограниченными и либо подвергаются непосредственно API (например, Content-Type), либо защищены системой и не могут быть изменены. Range является одним из этих заголовков. Полный список:

Accept 
Connection 
Content-Length 
Content-Type 
Date 
Expect 
Host 
If-Modified-Since 
Range 
Referer 
Transfer-Encoding 
User-Agent 
Proxy-Connection 
+0

Так как бы вы установили заголовок диапазона с помощью sdk? – dtascher

+0

Попробуйте использовать WebClient, например: WebClient headers = new WebClient(); headers.Headers.Add («Диапазон», «что-то»); Я имею в виду не словарь, потому что в GetObjectSaveToFile на нем находится коллекция пользовательских HTTP-заголовков. –

+0

Итак, нет способа установить заголовок диапазона в SDK? – dtascher