我正在使用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)?感谢您的时间和帮助。
答案 0 :(得分:1)
Tempfile用于创建具有唯一文件名的临时文件,该文件名将由垃圾收集器清除或者在ruby解释器退出时清除。
Tempfiles的行为类似于File对象,但我不确定您是否可以重命名文件,如果可以的话,如果上述自动清理仍然有效。此外,如果手动更改临时文件名,则可能会破坏唯一文件名的约束。
我建议创建一个普通文件并自己指定整个名称(succ方法可以帮助防止名称冲突)。
另一种解决方案可能是在上传过程中或之后设置文件名,你提到过。
答案 1 :(得分:0)
请注意确定是否有Tempfile文件,但是您是否可以在创建时间之后通过FileUtils模块重命名文件?这样你就可以实现创建的文件仍然具有有效且用户友好的名称。