2014-03-31 94 views
3

我正在使用Tempfile在上傳到新目標之前存儲生成的PDF。Ruby臨時文件 - 修改文件名?

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 

雖然這工作得很好,生成的文件名,EG-bob20140331-19260-1g6rzr1.pdf不是用戶友好。

我知道Tempfile會創建一個唯一的名稱和原因,但我最終需要更改名稱以使其更直觀/更易於我的用戶進行消解。

有沒有推薦的方法來做到這一點?即使它只是刪除中間(19260)?感謝您的時間和幫助。

+0

你試圖得到什麼名字?例如,請 –

+0

如果你想創建自己的臨時文件名,那麼就這樣做。 –

回答

1

Tempfile用於創建具有唯一文件名的臨時文件,該文件名將由垃圾收集器清理,或者在ruby解釋器退出時清理。

臨時文件的行爲與File對象相似,但我不確定是否可以重命名文件,並且如果可以,如果上述自動清除仍然有效。此外,如果手動更改臨時文件名,則可能會破壞唯一文件名的約束。

我建議創建一個普通文件並自己指定整個名稱(succ方法可以有助於防止名稱衝突)。

另一種解決方案可能是在上傳過程中或之後設置文件名,您提到過。

0

注意確定是否有Tempfile文件,但是在創建時通過FileUtils模塊不能重命名文件嗎?通過這種方式,您可以實現創建的文件仍具有有效且用戶友好的名稱。