【问题标题】:Ruby Tempfile - Modify file name?Ruby Tempfile - 修改文件名?
【发布时间】:2014-03-31 12:25:23
【问题描述】:

在上传到新目的地之前,我使用 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

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

我了解 Tempfile 会创建一个唯一的名称以及原因,但我最终需要更改名称以使其更直观/更易于用户理解。

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

【问题讨论】:

  • 您想通过什么方式获取名称?请举例
  • 如果你想创建自己的临时文件名,那么就这样做吧。

标签: ruby filenames temporary-files


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    请注意确定是否有一个带有 Tempfile 的文件,但是您可以通过 FileUtils 模块在创建时间后不重命名文件吗?这样您就可以实现创建的文件仍然具有有效且用户友好的名称。

    【讨论】:

      猜你喜欢
      • 2013-01-11
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多