2013-01-06 16 views
1

我有一個腳本需要一個文件,操縱一些數據,並寫入一個輸出.csv文件。 .csv文件應該可供用戶查看和下載。這是Heroku上的S3應用程序。從軌道一行一行地寫入數據到一行或一次作爲一個較大的整體?

現在腳本「逐行寫入」一個硬編碼的本地文件系統輸出文件。當我將這個腳本與rails集成時,我需要重構腳本以在控制器中逐行構建一個數組,並將它作爲一個整體寫入S3中?還是繼續像我在本地一樣寫行S3?

它看起來像我需要在控制器中建立一個數組併發布到S3?然後,控制器的「show」操作將引用該視圖中使用的實例變量的文件。幾乎讓我懷疑用戶是否可以在客戶端上製作csv,而不必在S3上存儲文件?這是AJAX的工作嗎?

我現在正在查看aws-sdk來訪問文件,就像我本地系統上的任何其他文件一樣。

的粗糙例如原樣,每行寫代碼:

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

輕鬆切換這個代碼來構建一個數組,然後寫一次......我本來寫的一行行所以我不噸有大陣整個文件...

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

回答

1

S3不是一個本地文件系統 - 你需要在本地建立文件,然後將其發送到S3(有軟件,這將使S3看起來像一個儘管我不知道你是否可以在heroku上運行它)。

如果您的文件很大,您可以進行分段上傳,但每個部分(除最後一個)必須至少爲5MB。

相關問題