Мне удалось загрузить файлы, используя StringIO
и присвоив ему :path
# email is a Viewpoint::EWS::Types::Message
# email_endpoint is a RestClient::Resource
attachments = email.attachments.map do |attachment|
file = StringIO.new(Base64.decode64(attachment.content))
file.class.class_eval { attr_accessor :original_filename, :content_type, :path }
file.original_filename = attachment.file_name
file.content_type = attachment.content_type
file
end
response = email_endpoint.post(
email: {
subject: email.subject,
attachments: attachments
}
)
. Библиотека rest-client
автоматически будет обрабатывать объекты, которые отвечают на :path
и :read
в качестве файлов и используйте загрузку из нескольких частей.
Каждое вложение затем отображается в Rails как ActionDispatch::Http::UploadedFile
с правильным именем файла.