2017-10-08 51 views
1

我正在從我的rails服務器發送一個文件到一個微控制器。微控制器的內存不足,因爲(我們認爲)文件是以過大的數據塊發送的 - 一次最多可達16 kb。Rails 5 - 小文件流文件?

如何從S3獲取我已擁有的StringIO對象並以4kb塊的形式將其發送給請求者?

我目前的執行情況:

file_name = "#{version}.zip" 
firmware_file = s3(file_name).get() 
response.headers['Content-Length'] = firmware_file.body.size.to_s 
send_data firmware_file.body.read, filename: file_name 

回答

2

Rails有ActionController::Live模塊,它可以幫助你在流實時響應。就你而言,由於你想創建更小的塊並將其發送給客戶端(微控制器),因此此功能可能非常有用。

由aaron patterson撰寫的文章Is It Live?的「文件系統監控」部分解釋瞭如何通過ActionController::Live實時將文件系統更改推送到客戶端。

希望這會有所幫助!

+0

感謝您指出這一點 - 我沒有機會嘗試它 - 我最終將response_body設置爲一個枚舉器,我正在從文件讀取並添加延遲。如果這不能平移,我會試試這個。 – pherris