0

Rackspace OpenStack Cloud Files APIを使用しています。アップロード自体は問題なく動作しますが、オブジェクトのメタデータの更新に問題があります。CreateObject メソッドを呼び出した後、ファイルには正しいヘッダーがありますが、同じオブジェクトで UpdateObjectMetadata を呼び出した後、コンテンツ タイプ ヘッダーが変更されます。ここで何が間違っているのかわかりません。

        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 変数の前後の値です。content-type が image/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]}

編集: 一時的な回避策として、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);
4

1 に答える 1