【问题标题】:Delete Carrierwave S3 Directory With Processed Files删除包含已处理文件的 Carrierwave S3 目录
【发布时间】:2014-01-14 06:10:57
【问题描述】:

在我的例子中,当用户通过 Carrierwave(使用雾)将图像上传到 S3 时,他们的原始图像会被处理,并且优化的副本也会被制作并存储在 S3 中。但是,当用户删除这些图像时,Carrierwave 仅删除原始图像,而保留目录+优化副本。我想找到一种方法来删除原始文件、它的目录以及其中的所有文件。

我在 Carrierwave 的源代码中发现了以下内容,我认为这可能会有所帮助:

# File lib/carrierwave/storage/s3.rb, line 100
def delete
  AWS::S3::S3Object.delete @path, @uploader.s3_bucket
end

我想知道是否有人完成了这样的事情?我很想听听你是怎么做到的……从长远来看,这可以节省相当多的磁盘空间。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 carrierwave fog


    【解决方案1】:

    来自Offical Documentation - Class: AWS::S3::ObjectCollection

    delete 有一个实例方法Object

    # delete 2 objects (by key) in a single request
    bucket.objects.delete('abc', 'xyz')
    
    You can delete objects also by passing their S3Object representation:
    
    to_delete = []
    to_delete << buckets.objects['foo']
    to_delete << buckets.objects['bar']
    
    bucket.objects.delete(to_delete)
    

    或者从集合中删除所有对象,有一个实例方法delete_all

    (数组) delete_all

    Deletes all objects represented by this collection.
    
    Examples:
    
    Delete all objects from a bucket
    
        bucket.objects.delete_all   
        Delete objects with a given prefix
        bucket.objects.with_prefix('2009/').delete_all
    

    【讨论】:

      猜你喜欢
      • 2013-04-29
      • 2011-03-21
      • 1970-01-01
      • 2018-06-18
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      相关资源
      最近更新 更多