1

xmlファイルをAmazonS3サーバーにアップロードしようとしています。ルビーの私のコードは次のようになります:-

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 に答える