Ruby on rails 上载文件时,临时文件夹位于何处

Ruby on rails 上载文件时,临时文件夹位于何处,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在编写RubyonRails应用程序,它将记录存储在db表中(记录数不超过200行)。每条记录都与一个jpeg/png图像或图标(最大尺寸为32x32)相关联。因此,我的应用程序必须将图像上传并保存到服务器上的特定文件夹中 在文档中,它说“params散列中的对象是IO子类的实例。根据上载文件的大小,它实际上可能是StringIO或由临时文件支持的文件的实例。” 我的问题:这个临时文件夹在服务器上的什么位置?它是依赖于系统还是依赖于应用程序?tempfile的位置可能依赖于系统,可能位于/t

我正在编写RubyonRails应用程序,它将记录存储在db表中(记录数不超过200行)。每条记录都与一个jpeg/png图像或图标(最大尺寸为32x32)相关联。因此,我的应用程序必须将图像上传并保存到服务器上的特定文件夹中

在文档中,它说“params散列中的对象是IO子类的实例。根据上载文件的大小,它实际上可能是StringIO或由临时文件支持的文件的实例。”


我的问题:这个临时文件夹在服务器上的什么位置?它是依赖于系统还是依赖于应用程序?

tempfile的位置可能依赖于系统,可能位于
/tmp
文件夹的某个位置

但是你真的不需要知道

上载的映像作为StringIO对象保存在内存中,或者保存到主机服务器上的临时文件中。这是rails提供的优化。如果图像足够小,Rails将向您传递一个StringIO对象,它基本上是加载到内存中的整个图像。如果映像较大,它将向您传递一个表示磁盘上临时文件的实例

您只需要将其保存到一个已知的文件夹中,比如说
uploads
。您不需要关心映像是存储在内存中还是存储在磁盘上

StringIO对象和临时文件备份对象都响应
:read
方法。您所要做的就是调用read来获取数据,然后将数据写到您想要的位置

image_as_io = params[:image]
filename = ... # determine a filename for the image

File.open(Rails.root.join('public', 'uploads', filename), 'wb') do |file|
  file.write(image_as_io.read)
end

只是好奇,如果它依赖于应用程序,那么如何配置它们应该存储在哪里?谢谢!我知道我不需要知道临时文件的位置就可以存储上传的文件。我只是想知道上传文件时幕后发生了什么。我假设它是
Tempfile
的一个实例,所以它会有一个
路径
方法,你可以检查一下你是否真的想知道。好主意!我会检查的。是的,它工作正常,我正在使用Ubuntu,并且它显示了预期的
/tmp