0

我正在尝试使用 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?

4

2 回答 2

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”,但请记住在文件路径中硬编码方式很脆弱,如果您的文件存储要求发生变化,将来可能会成为一个痛点。

希望有帮助。

于 2009-09-07T05:14:26.697 回答
0

我找到了一种比使用相对路径名更适合我的替代方法。我添加了一个调用full_filename我的附件类的方法:

class attachment < ActiveRecord::Base
    def full_filename
       return  "/Users/ron/attachments/#{id}.#{file_format}"
    end
end
于 2009-10-22T05:44:11.763 回答