2014-02-14 42 views
0

我正在嘗試使用副本爲存儲桶中的所有mp3重置content_type(如Set content_type of Fog storage files on s3中所述)。在S3上設置Content_Type with Fog,但不覆蓋其他元數據

但是,這將覆蓋該項目的所有現有值,特別是storage_class和owner值。這些值對於存儲桶中的所有文件都是相同的,因此我嘗試將它們設置爲選項。但是,當我在複製完成後查詢文件的所有者時,我會得到nil。

connection.directories.get('my_bucket').files.each do |f| 
    content_type = case f.key.split(".").last 
     when "mp3" 
      "audio/mpeg" 
     when "ogg" 
      "audio/ogg" 
     end 

    options = { 
     'Content-Type' => content_type, 
     'Owner' => '{:display_name=>"myadmin", :id=>"myadminid"}', 
     'Storage-Class' => 'STANDARD', 
     'x-amz-metadata-directive' => 'REPLACE' 
    } 

    puts directory.files.get(f.key) if f.copy(f.directory.key, f.key, options) 
end 

回答

1

我想這可能只是如何指定的選項。我想也許你需要指定存儲類,例如,如:

x-amz-storage-class而不是Storage-Class

我不知道主人雖然,我原以爲只是憑藉誰創造了的對象(所以在複製的情況下,它將匹配誰推測複製操作)。我不確定這可以被覆蓋。

希望有所幫助。

+0

謝謝,這確實有幫助。我認爲所有者也是自動生成的,所以我不確定爲什麼我在那裏看到零,無論如何它似乎不影響我的文件的功能。 –

+0

是的,零業主也可能是一個錯誤。但如果不阻止你,現在聽起來像是不值得擔心太多。 – geemus