我正在尝试使用attachment_fu将文件上传到RAILS_ROOT
之外的目录。我希望将文件保存到~/APP_NAME/uploads/
,以便在公开发布之前批准/拒绝这些文件。我为has_attachment
尝试了以下配置:
has_attachment :storage => :file_system,
:path_prefix => "~/APP_NAME/uploads/",
:max_size => 5.megabytes
不幸的是,此配置只是在~/APP_NAME/uploads/
中创建RAILS_ROOT
目录结构。有何方法将文件保存在RAILS_ROOT
之外?
答案 0 :(得分:1)
这可能不是Attachment-Fu问题,而是Ruby如何处理文件I / O以及如何在Unix中存储文件。
例如,如果您的应用位于〜/ Users / ron / APP_NAME
中如果您更改上述代码:
:path_prefix => "~/APP_NAME/uploads/"
要:
:path_prefix => "../#{RAILS_ROOT}/uploads"
文件将存储在〜/ Users / ron / uploads中名为“uploads”的文件夹中。 “../”表示当前Rails根目录之上的一个目录。如果你想上两个目录,那就是“../../”等等。
但这只涉及分层导航。如果你想告诉Attachment-Fu将文件存储在文件系统的硬编码目录中,你可以给它一个文件路径,例如“〜/ Users / ron / APP_NAME / uploads”,但请记住文件路径中的硬编码方式很脆弱,如果您的文件存储需求发生变化,将来可能会成为一个痛点。
希望有所帮助。
答案 1 :(得分:0)
我发现了一种比使用相对路径名更适合我的替代方法。我在我的附件类中添加了一个名为full_filename
的方法:
class attachment < ActiveRecord::Base
def full_filename
return "/Users/ron/attachments/#{id}.#{file_format}"
end
end