Ruby Tempfile - 修改文件名?

use*_*180 5 ruby filenames temporary-files

在上传到新目的地之前,我使用 Tempfile 来存储生成的 PDF。

    pdf_file = WickedPdf.new.pdf_from_string(msgbody)
    tempfile = Tempfile.new(['Bob', '.pdf'], Rails.root.join('public','pdf-test'))
    tempfile.binmode
    tempfile.write pdf_file
    tempfile.close
Run Code Online (Sandbox Code Playgroud)

虽然这工作正常,但生成的文件名,例如 bob20140331-19260-1g6rzr1.pdf 对用户不友好。

我知道 Tempfile 创建了一个唯一的名称以及原因,但我最终需要更改名称以使其更直观/更容易为我的用户消化。

有推荐的方法吗?即使它只是简单地删除中间(19260)?感谢您的时间和帮助。

Tsu*_*mis 1

Tempfile 用于创建一个具有唯一文件名的临时文件,该文件将由垃圾收集器或 ruby​​ 解释器退出时清理。

临时文件的行为类似于文件对象,但我不确定您是否可以重命名文件,以及是否可以,上述自动清理是否仍然有效。此外,如果手动更改临时文件名,则可能会打破唯一文件名的限制。

我建议创建一个普通文件并自己指定整个名称(succ 方法有助于防止名称冲突)。

您提到,另一种解决方案可能是在上传过程期间或之后设置文件名。