本地文件上传:File.open或StringIO

时间:2014-02-06 18:03:12

标签: ruby-on-rails carrierwave

我的应用程序允许用户上传图像,然后创建该图像的不同版本(例如,与另一图像对齐和裁剪)。中间步骤是我需要将上传的文件复制到另一个对象并进行处理。最简单的方法是在本地上传。

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

在carreirwave自述文件中,他们还建议使用File.open(类似obj.image=File.open('path_to_file')

我还发现了使用fixture_file_upload中的ActionDispatch::TestProcess的引用(通常在测试中,但我不确定为什么它仅限于该环境)。

任何人都可以对使用这些方法的利弊(如果有的话)给出一个很好的解释吗?

感谢。

1 个答案:

答案 0 :(得分:0)

我刚刚发现了一个主要的区别,至少在载波的背景下。如果您使用载体wave并将move_to_cache选项设置为true并使用File.open安装上传列,则会移动提供给File.open的文件,而使用StringIO时,会获得“T