上传文件到Rails ROOT的目录以外具有attachment_fu
-
21-09-2019 - |
题
我试图用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 /上传”,但请记住,硬编码的文件路径此方法是脆的,并可能在未来的一痛点应您的文件存储需求的变化。
希望有所帮助。
不隶属于 StackOverflow