gpt4 book ai didi

ruby-on-rails - Rails Paperclip S3 重命名数千个文件?

转载 作者:行者123 更新时间:2023-12-05 00:37:33 25 4
gpt4 key购买 nike

我正在尝试重命名 s3 中的许多文件——更改当前的回形针 has_attached_file :path来自 stuff/:id_:updated_at_:style.:extensionstuff/:id_:counter_:style.:extension ,其中 :counter是与图像在同一模型中的字段。

我对如何重命名所有文件一无所知——最好是在 rake 任务中。

顺便说一句,我将增加 :counter每次将新文件保存到记录中。

这是 Rails 3 和截至本文发布时的最新 Paperclip。

有任何想法吗?

谢谢!

最佳答案

这是我的解决方案:

# This task changes all of the keys from the current format,
# :id_:image_updated_at_:style, to :id_:image_counter_:style.
# :image_counter is set arbitrarily at 1, since all records have
# a default of 1 in that field (until they're updated).
desc "One-time renaming of all the amazon s3 content for User.image"

task :rename_s3_files, [:bucket] => :environment do |t, args|
require 'aws/s3'

cred = YAML.load(File.open("#{Rails.root}/config/s3.yml")).symbolize_keys!
AWS::S3::Base.establish_connection! cred

bucket = AWS::S3::Bucket.find(args[:bucket])

# Rename everything in the bucket, taking out the timestamp and replacing it with "1"
bucket.each do |obj|
arr = obj.key.split('_')
obj.rename(arr[0] + '_1_' + arr[2])
end

end

它只是遍历存储桶中的所有文件并根据这个新模式重命名它们。我将 Paperclip 路径中的 :counter 字段设置为默认为 1,因此 _1_在新文件名中。

奇迹般有效!

关于ruby-on-rails - Rails Paperclip S3 重命名数千个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6742183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com