2009-09-07 114 views
0

我試圖使用attachment_fu將文件上傳到RAILS_ROOT以外的目錄。我希望將這些文件保存到~/APP_NAME/uploads/,以便在公開發布之前可以批准/拒絕這些文件。我嘗試了以下配置has_attachment將文件上傳到RAILS根目錄以外的目錄attachment_fu

has_attachment :storage => :file_system, 
       :path_prefix => "~/APP_NAME/uploads/", 
       :max_size => 5.megabytes 

不幸的是,這種配置只需在RAILS_ROOT創建~/APP_NAME/uploads/目錄結構。任何方式來保存RAILS_ROOT以外的文件?

回答

0

我發現了一種比使用相對路徑名更適合我的替代方法。我在我的附件類中添加了一個名爲full_filename的方法:

class attachment < ActiveRecord::Base 
    def full_filename 
     return "/Users/ron/attachments/#{id}.#{file_format}" 
    end 
end 
1

這可能不是Attachment-Fu問題,而是Ruby如何處理文件I/O以及如何在Unix中存儲文件。

因此,舉例來說,如果你的應用程序住在,比如〜/用戶/羅恩/ APP_NAME

如果更改上面的代碼:

:path_prefix => "~/APP_NAME/uploads/" 

要:

:path_prefix => "../#{RAILS_ROOT}/uploads" 

的文件將存儲在〜/ Users/ron/uploads中名爲「uploads」的文件夾中。 「../」表示當前Rails根目錄之上的一個目錄。如果你想上兩個目錄,它會是「../../」等等。

但這隻能解決分層導航。如果您想告訴Attachment-Fu將文件存儲在文件系統的硬編碼目錄中,可以給它一個諸如「〜/ Users/ron/APP_NAME/uploads」之類的文件路徑,但請牢記此文件路徑中的硬編碼方式是脆弱的,如果您的文件存儲需求發生變化,將來可能會成爲一個痛點。

希望有所幫助。