数据"吃掉"在文件上传到Amazon S3服务器

时间:2012-09-30 17:56:45

标签: ruby-on-rails macos amazon-s3

我正在尝试将xml文件上传到Amazon S3服务器。我在Ruby中的代码是这样的: -

AWS::S3::S3Object.store("dir/data.xml",
                            "#{xml.target!}",
                            "bucket",
                            :access => :private,
                            :content_type => 'text/xml')

xml是一个RSS提要文件。当我从服务器下载上传的文件时,该文件缺少文件的最后一行。

</rss>

删除可选参数content-type对输出没有影响。但是,更改数据组件以插入其他字符会使缺少的字符显示为核心。

AWS::S3::S3Object.store("dir/data.xml",
                                "#{xml.target!}         ",
                                "bucket",
                                :access => :private,
                                :content_type => 'text/xml')

即使这解决了我的问题,我也不太愿意在生产中使用此代码。另外,我想知道出了什么问题?

事实上,当我写入本地计算机上的文件时,它可以正常工作。

file = File.new("/path/feed.xml", "w")
    file.write(xml.target!)
    file.close

更新:我在上传csv文件时也面临同样的问题。我注意到对于非常大的文件,甚至会截断更多数据。对于xml文件,不仅关闭rss标记,还缺少其他一些标记。同样适用于csv文件。我该如何解决这些问题?

1 个答案:

答案 0 :(得分:2)

发送xml.target!因为数据以某种方式导致了这个问题。为了解决这个问题,我使用StringIO.new创建了一个新字符串。

对于csv,我使用了这样的东西: -

 csv_string = StringIO.new(csv_string)