Se estiver usando Rails e Paperclip com S3, você pode escolher qual será o nome do arquivo baixado definindo o cabeçalho “content disposition”:
class User < ActiveRecord::Base
has_attached_file :avatar, s3_headers: -> avatar { {
content_type: 'image/jpeg',
content_disposition: 'attachment; filename="default_name.jpg"'
} }
end
A disposição do conteúdo é definida no momento do upload, mas você pode alterá-la mais tarde:
user = User.find(id)
s3_object = user.avatar.s3_object
s3_object.copy_to(
s3_object,
metadata_directive: 'REPLACE',
content_disposition: 'attachment; filename="new_name.jpg")'
Você deve “substituir” os metadados , mesmo se estiverem em branco, caso contrário, o S3 não permitirá que você copie o arquivo sobre ele mesmo (gerará um erro).