2014-02-06 35 views
0

我的應用程序允許用戶上傳圖像,然後創建該圖像的不同版本(例如與另一圖像對齊和裁剪)。中間步驟是我需要將上傳的文件複製到另一個對象並進行處理。最簡單的方法是在本地上傳它。本地文件上傳:File.open或StringIO

來自carrierwave wiki,they suggest using a modified version of StringIO

在carreirwave自述,他們也建議使用File.open(類似obj.image=File.open('path_to_file')

我還發現引用使用從ActionDispatch::TestProcess(通常在測試fixture_file_upload,但我不確定它爲什麼被限制到該環境)。

誰能給我使用這些方法對利弊一個很好的解釋(如果有的話)?

感謝。

+0

我不是100%確定stringIO是如何工作的,但是你要非常小心,不要將整個文件加載到內存中,否則你的ruby進程會增加一些非常大的潛在內存增加。 – Kevin

回答

0

我舉st發現了一個主要區別,至少在carrierwave的背景下。如果您使用carrierwave將move_to_cache選項設置爲true,並將您的上傳列設置爲File.open,則給File.open的文件將被移動,而StringIO則不會。