我试图用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的文件以外?

有帮助吗?

解决方案 2

,我发现一种替代方法,该方法适合我比使用相对路径名更好。我添加了一个名为full_filename方法到我的附件类:

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

其他提示

这可能不是一个附件富的问题,而是Ruby的程序如何处理文件I / O以及文件如何存储在Unix的。

因此,举例来说,如果你的应用程序的生命中,比如〜/用户/罗恩/ APP_NAME

如果你改变了上面的代码:

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

要:

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

中的文件将被存储在一个〜/用户/罗恩/上传称为“上传”文件夹中。的“../”是指一个目录中的当前的Rails根以上。如果你愿意,可以去两个目录,这将是“../../”等。

但是,这只有地址分层导航。如果你想告诉附件福来将文件存储在文件系统中的硬编码的目录,你可以给它一个文件路径,如“〜/用户/罗恩/ APP_NAME /上传”,但请记住,硬编码的文件路径此方法是脆的,并可能在未来的一痛点应您的文件存储需求的变化。

希望有所帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top