1

我正在尝试将 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 文件也是如此。我该如何解决这些问题?

4

1 回答 1

2

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

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

 csv_string = StringIO.new(csv_string)
于 2012-10-03T07:17:40.330 回答