Ruby on rails 删除带有已处理文件的Carrierwave S3目录
在我的例子中,当用户通过Carrierwave(使用fog)将图像上传到S3时,他们的原始图像会被处理,优化的副本也会被制作并存储在S3中。但是,当用户删除这些图像时,Carrierwave仅删除原始图像,而目录+优化副本仍保留。我想找到一种方法来删除原始文件、它的目录以及其中的所有文件 我在Carrierwave的资料中发现了以下内容,我认为这可能会有所帮助:Ruby on rails 删除带有已处理文件的Carrierwave S3目录,ruby-on-rails,ruby-on-rails-3,carrierwave,fog,Ruby On Rails,Ruby On Rails 3,Carrierwave,Fog,在我的例子中,当用户通过Carrierwave(使用fog)将图像上传到S3时,他们的原始图像会被处理,优化的副本也会被制作并存储在S3中。但是,当用户删除这些图像时,Carrierwave仅删除原始图像,而目录+优化副本仍保留。我想找到一种方法来删除原始文件、它的目录以及其中的所有文件 我在Carrierwave的资料中发现了以下内容,我认为这可能会有所帮助: # File lib/carrierwave/storage/s3.rb, line 100 def delete AWS::S3
# File lib/carrierwave/storage/s3.rb, line 100
def delete
AWS::S3::S3Object.delete @path, @uploader.s3_bucket
end
我想知道是否有人做过这样的事?我很想听听你是怎么做到的。。。从长远来看,这可以节省大量磁盘。
对于对象
,有一个实例方法delete
:
# 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)
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