AWS :: S3重命名文件夹

fgu*_*len 12 ruby amazon-s3

我看到有一个,AWS::S3::S3Object.rename但我不能用文件夹做:

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]
)
Run Code Online (Sandbox Code Playgroud)

old_name_folder包含文件和文件夹,我想改名尊重这一点.

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

我不知道我做错了什么,或者只是不能重命名s3文件夹.

Bre*_*der 28

AWS :: S3文档很好地解释了这一点.在s3上存储文件时,没有文件夹这样的东西.有一个桶(APP_CONFIG[:s3_bucket]大概是你的),还有一些物品.这就对了.没有文件夹.您的一个对象可能被命名/files/public/system/whatever/derp.jpg- 但是那里没有文件夹,只有名称看起来像路径的对象,然后是对象的值(驻留在该位置的实际文件).

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

  • 我同意“它不是*真正的*文件夹”缺乏解释。应该可以重命名这些“对象”或“属性”或“虚拟文件夹”或任何名称。事实上,人们想要这样做,但实现的方法却很麻烦。它们也可能不是文件夹,但肯定有一个名为“创建文件夹”的选项。 (9认同)
  • 谢谢你的解释,我必须说,在我看来,即使在引擎盖下可能没有任何文件夹,它肯定看起来像文件夹,如果他们只是让你重命名S3中的"文件夹"将是很好的然后,面板将重命名所有需要它的对象.只是在说 (7认同)
  • @fguillen - 你没有/不能删除旧的.只需重命名文件/对象.你看到的文件夹只是虚拟的 - 它们是gui工具用`/`来解释文件名的方式 (5认同)
  • 有一些外部程序可以让你做到这一点,我个人一直在使用 [3Hub](http://www.3hubapp.com/)。 (2认同)