繁体   English   中英

Rails-如何创建文件(XML)并将其保存到Amazon S3存储桶中?

[英]Rails - how to create file (XML) and save it into Amazon S3 bucket?

我需要将所有产品从数据库表生成为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"

这让我有些困惑...因为我不确定此任务的逻辑。 我的想法是在Products控制器中运行一个动作(例如create_xml_feed

 xml = Builder::XmlMarkup.new( :indent => 2 )
 xml.instruct! :xml, :encoding => "ASCII"
 xml.product do |p|
   p.name "Test"
 end

但是问题来了-我不知道如何将新创建的文件保存到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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM