1

ファイルを受け取り、いくつかのデータを操作し、出力 .csv ファイルを書き込むスクリプトがあります。.csv ファイルは、ユーザーが表示およびダウンロードできる必要があります。これは、S3 を使用した heroku 上の Rails アプリです。

現在、スクリプトは、ハードコードされたローカル ファイルシステムの出力ファイルを「1 行ずつ」書き込みます。このスクリプトを rails、heroku、および amazon S3 と統合する場合、スクリプトを再構築してコントローラーで行ごとに配列を作成し、それを一度 S3 に書き込む必要がありますか? それとも、ローカルで行うように S3 に 1 行ずつ書き込みを続けますか?

コントローラーでアレイを構築して S3 に投稿する必要があるように見えますか? 次に、コントローラーの「表示」アクションは、ビューで使用されるインスタンス変数のファイルを参照します。ユーザーがクライアント側で csv を作成するだけで、S3 に保存するファイルを作成する必要がないのではないかと思いますか? これはAJAXの仕事ですか?

ローカルシステム上の他のファイルと同じように、ファイルにアクセスするために aws-sdk を見ています。

そのままの大まかな例として、行コードごとに記述します。

file_in.each_line do |line|
    #some line manipulation
    file_out << output
end

このコードを簡単に切り替えて配列を構築し、一度書き込む...最初は1行ずつ書いたので、大きな配列にファイル全体がありません...

file_in.each_line do |line|
    #some line manipulation
    @array.push(output)
end
file_out << @array
4

1 に答える 1

1

S3 はローカル ファイルシステムではありません。ファイルをローカルにビルドしてから S3 に送信する必要があります (s3 をファイル システムのように見せるソフトウェアがありますが、heroku で実行できるかどうかはわかりません)。

ファイルが大きい場合は、マルチパート アップロードを行うことができますが、各パート (最後を除く) は少なくとも 5MB である必要があります。

于 2013-01-06T10:34:44.487 に答える