我正在尝试将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文件。我该如何解决这些问题?
答案 0 :(得分:2)
发送xml.target!因为数据以某种方式导致了这个问题。为了解决这个问题,我使用StringIO.new创建了一个新字符串。
对于csv,我使用了这样的东西: -
csv_string = StringIO.new(csv_string)