【问题标题】:How do I rename a file with Fog?如何使用 Fog 重命名文件?
【发布时间】:2012-12-20 21:48:48
【问题描述】:

我有一个 rails 3.2 应用程序。在 S3 中使用雾存储文件。

我想编写一个脚本来重命名所有已上传的文件。我似乎在这方面找不到任何雾文档。

这可能在雾中实现吗?我需要另一个宝石吗?

【问题讨论】:

    标签: ruby ruby-on-rails-3.2 fog


    【解决方案1】:

    this post 中提到的复制呢? 参看。 fog's requests sourcesfog's models sources

    你应该可以做到:

    storage.copy_object('old_bucket', 'old_filename', 'new_bucket', 'new_filename')
    

    file.copy('new_bucket', 'new_filename')
    

    但在成功复制后销毁原始文件仍然是必要的。

    【讨论】:

    • 上述 storage.copy_object 示例中的参数乱序。根据github.com/fog/fog/blob/master/lib/fog/aws/requests/storage/…的来源,应该是old_bucket、old_filename、new_bucket、new_filename
    • @MelindaWeathers,在答案中考虑在内。
    • 在这种情况下,雾将利用 S3 的 copy 命令,您不必将文件内容传输到本地系统。更快。
    【解决方案2】:

    坏消息是您需要执行 get/create/destroy

    foo = bucket.files.get 'foo'
    bar = bucket.files.create :key => 'bar', :body => foo.body
    foo.destroy
    

    好消息是,如果您是从同一区域的 ec2 执行此操作,它可能会像在本地计算机上重命名文件一样快

    【讨论】:

      猜你喜欢
      • 2020-04-03
      • 2011-01-30
      • 2011-03-30
      • 2012-06-01
      • 2017-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多