将.txt文件转换为rails上的.xml ruby

时间:2015-07-23 14:48:52

标签: ruby-on-rails ruby xml type-conversion text-files

我有一个自定义文件类型(.map),我从Gzip文件解压缩然后写入新文件,以便将其传递给Paperclip并上传到s3。我的问题是类型应该是一个xml,而它保存为文本文档而不是所有的xml格式都正确。我需要一种方法将其转换为xml类型,然后将其保存为新的File对象,然后再传递它。

到目前为止,这是我的代码:

  Zlib::GzipReader.open(f.tempfile) do |gz|
    puts gz.orig_name
    @tmp = File.new(gz.orig_name, "w+")
     while chunk = gz.read(16*1024) do
       @tmp.write(chunk)
     end  
  end  
  reader = @tmp.read 


  s = location.posts.create!( 
    subject: @email.subject,
    from: @email.from[:email],
    mapfile: @tmp)    
}  

理想情况下,我将传递mapfile xml类型文件,但现在它似乎是文本

更新

所以现在我已经设置了post.rb来执行此操作,并为包含原始文件名的帖子添加了name属性:

has_attached_file :mapfile, 
        :preserve_files => "true",
        :path => 
             ':rails_root/non-public/system/:id/:basename.:extension',
        :url => '/:class/:id/mapfiles',
        :s3_headers => lambda { |attachment| {'Content-Disposition' => "attachment; filename =  #{attachment.name}"}}

这完美无缺!

1 个答案:

答案 0 :(得分:2)

听起来你在谈论'Content-Type'。将文件保存到文件系统时,无法设置:系统将根据文件扩展名决定使用什么,并且可能通过分析内容(如果是文本文件)来决定。

但是,您可以在将文件提供给某人的浏览器时以及将其上传到S3时设置内容类型。请参阅此处了解后者Setting the Content-Type in direct to S3 upload using Rails and jQuery File Upload