2011-03-30 198 views
10

我看到有一个AWS::S3::S3Object.rename但我不能文件夹做到这一点:AWS :: S3重命名文件夹

AWS::S3::Base.establish_connection!(
:access_key_id  => APP_CONFIG[:s3_access_key_id], 
:secret_access_key => APP_CONFIG[:s3_secret_access_key] 
) 
AWS::S3::S3Object.rename(
"assets/old_name_folder", 
"assets/new_name_folder", 
APP_CONFIG[:s3_bucket] 
) 

old_name_folder包含文件和文件夹,我想改名尊重这个。

我获得:AWS::S3::NoSuchKey (The specified key does not exist.)

我不知道如果我做错了什么,或者它只是不能重命名S3文件夹

回答

26

documentation for AWS::S3解释得很好。在s3上存储文件时,不存在文件夹等。有一个桶(大概是APP_CONFIG[:s3_bucket]),并且有物体。这就对了。没有文件夹。其中一个对象可能被命名为/files/public/system/whatever/derp.jpg - 但这里没有文件夹,只有名称看起来像路径的对象,然后是对象的值(驻留在该位置的实际文件)。

所以要回答你的问题,你不能重命名文件夹,因为在S3上没有这样的事情。您必须重命名单个对象。

+0

很好理解,所以我必须将所有*文件路径*复制到*新文件路径*并删除*旧文件路径*。 – fguillen 2011-03-30 17:29:50

+5

@fguillen - 你不必/不能删除旧的。只需重命名文件/对象。你看到的文件夹只是虚拟的 - 它们就是gui工具通过里面的'/'来解释文件名的方式 – 2011-03-30 17:54:00

+0

@fguillen Geoff是对的,祝你好运! – 2011-03-30 18:05:07