gpt4 book ai didi

ruby-on-rails - 我们上传文件时的临时文件夹在哪里

转载 作者:行者123 更新时间:2023-12-02 03:36:35 25 4
gpt4 key购买 nike

我正在编写将记录存储在数据库表中的 Ruby-on-Rails 应用程序(记录数不超过 200 行)。每条记录都与一个 jpeg/png 图像或图标(最大尺寸 32x32)相关联。所以我的应用程序必须将图像上传并保存在服务器上的特定文件夹中。

在文档中它说“params 哈希中的对象是 IO 子类的实例。根据上传文件的大小,它实际上可能是 StringIO 或由临时文件支持的 File 实例。 ".

我的问题:服务器上的这个临时文件夹在哪里?它是系统相关的还是应用程序相关的?

最佳答案

您的临时文件的位置可能取决于系统,可能在某处的 /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

关于ruby-on-rails - 我们上传文件时的临时文件夹在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23086891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com