use*_*621 1 ruby file-upload ruby-on-rails amazon-s3 paperclip
我需要将数据库表中的所有产品生成到XML文件中.因为我的应用程序在Heroku上运行,所以我需要使用Amazon S3作为存储.
以下是有关如何保存图像的示例:
has_attached_file :photo,
:styles => {
:thumb=> "100x100#",
:small => "400x400>" },
:storage => :s3,
:s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
:path => "/:style/:id/:filename"
Run Code Online (Sandbox Code Playgroud)
这让我有点困惑......因为我不确定这项任务的逻辑.我的想法是create_xml_feed在Products控制器中运行一个动作(比方说)
xml = Builder::XmlMarkup.new( :indent => 2 )
xml.instruct! :xml, :encoding => "ASCII"
xml.product do |p|
p.name "Test"
end
Run Code Online (Sandbox Code Playgroud)
但问题来了 - 我不知道,如何将新创建的文件保存到Amazon S3 Bucket中.
我很感激每一笔进步,谢谢
首先,创建一个活动记录类来保存上传的XML文件.在此之后,您可以编写逻辑来创建xml字符串,通过首先创建XmlUploader类的新实例来创建新文件,然后创建所需的xml字符串,将其保存在文件中,然后将此文件指定为附件文件.保存后,您的xml文件将上传到s3.
class XmlUploader < ActiveRecord::Base
has_attached_file :uploaded_file, :storage => :s3,
:s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
:path => "/:id/:filename"
def create_uploaded_file
xml = ::Builder::XmlMarkup.new( :indent => 2 )
xml.instruct! :xml, :encoding => "ASCII"
xml.product do |p|
p.name "Test"
end
file_to_upload = File.open("some-file-name", "w")
file_to_upload.write(xml)
file_to_upload.close()
self.uploaded_file = File.open("some-file-name")
self.save!
end
end
class CreateXmlUploaders < ActiveRecord::Migration
def change
create_table :xml_uploaders do |t|
t.attachment :uploaded_file
t.timestamps
end
end
end
xml_file = XmlUploader.new
xml_file.create_uploaded_file
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2090 次 |
| 最近记录: |