2013-09-21 3 views
0

Я использую Rackspace OpenStack Cloud Files API. Загрузка сама по себе работает без каких-либо проблем, но есть проблема с обновлением MetaData для объекта. После вызова метода CreateObject файл имеет правильные заголовки, но он меняет заголовок типа содержимого после вызова UpdateObjectMetadata на том же объекте. Не уверен, что я делаю неправильно здесь.CloudFilesProvider UpdateObjectMetadata Issue

 void Test(string containerName, Stream objectStream, string name, string region) 
    { 
     _cloudFilesProvider.CreateObject(containerName, objectStream, name, region: region); 

     // debug only 
     var metaData = _cloudFilesProvider.GetObjectMetaData(containerName, name, region); 

     _cloudFilesProvider.UpdateObjectMetadata(containerName, name, new Dictionary<string, string> 
                {{"Mimetype", "image/png"}, 
                {"Size", "500"}, 
                {"FileName", "TestImage.png"}, 
                {"Dimensions", "128x128"} }, region); 
     // debug only 
     metaData = _cloudFilesProvider.GetObjectMetaData(containerName, name, region); 
    } 

Это переменная metaData до и после значений. Посмотрите, как изменяется тип содержимого с изображения/png на application/json?

Перед

[0]: {[x-timestamp, 1379752874.71586]} 
[1]: {[x-trans-id, txf1bbd8a40b604f9a81140-00523d5bb4syd2]} 
[2]: {[accept-ranges, bytes]} 
[3]: {[content-length, 159340]} 
[4]: {[content-type, image/png]} 
[5]: {[date, Sat, 21 Sep 2013 08:41:24 GMT]} 
[6]: {[etag, 375cd8b405058f2766482345d4adbd0e]} 
[7]: {[last-modified, Sat, 21 Sep 2013 08:41:14 GMT]} 

После

[0]: {[x-timestamp, 1379752926.55112]} 
[1]: {[x-trans-id, tx269335ba878f44db890a1-00523d5be2syd2]} 
[2]: {[accept-ranges, bytes]} 
[3]: {[content-length, 159340]} 
[4]: {[content-type, application/json]} 
[5]: {[date, Sat, 21 Sep 2013 08:42:10 GMT]} 
[6]: {[etag, 375cd8b405058f2766482345d4adbd0e]} 
[7]: {[last-modified, Sat, 21 Sep 2013 08:42:06 GMT]} 

Edit: В качестве временного решения я использую метод CreateObject, чтобы изменить заголовки с метаданными. На самом деле это лучше, так как это избавляет от ненужного POST. Фактически, метод CreateObject должен, вероятно, поддерживать необязательный параметр для установки MetaData. Мысли?

cloudFilesProvider.CreateObject(containerName, objectStream, name, headers: new Dictionary<string, string> 
                 {{"X-Object-Meta-Mimetype", "image/png"}, 
                 {"X-Object-Meta-Size", "500"}, 
                 {"X-Object-Meta-FileName", "TestImage.png"}, 
                 {"X-Object-Meta-Dimensions", "128x128"} }, region: region); 

ответ

2

Я добавил отчет выпуск для этого к вопросу трекере:
#192: Object metadata methods should not change content type

Редактировать: Эта проблема уже исправлена, и будет частью релиза 1.2.0.0.

ряд других вопросов, связанных с типами контента, уже были зафиксированы для 1.2.0.0 выпуска:

  • Issue #104 для проекта был решен для выпуска 1.2.0.0, который добавляет поддержку для определения типов контента в CreateObject , CopyObject, CreateObjectFromFile и MoveObject методов.
  • Issue #125 также фиксируется для выпуска 1.2.0.0, который гарантирует, что CopyObject и MoveObject методы сохраняют оригинальный тип контента, если он не указан.
+0

Спасибо, я добавил обходной путь к этому вопросу выше. –

 Смежные вопросы

  • Нет связанных вопросов^_^