我在rails 5.2中使用活动存储。我正在遵循Edgerails指南,并已将活动存储配置为使用本地磁盘。
当我使用rails应用程序时,文件上传非常有效。
但是,问题是我需要物理地访问那些上传的文件,而不使用rails作为中介。
查询存储文件的位置将返回:
url_for(@employee_staff.avatar)
=> "/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBGUT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--e76664d247cb5437fe1cd11f7ee0ded24f95aee2/profilepic3.jpeg"
我正试图找出这个文件路径保存在我的本地磁盘中的位置。到目前为止,我没有运气。
非常感谢您对活动存储的工作原理以及我在哪里可以看到上传的文件所做的任何解释。
最佳答案
在您的本地开发计算机上(因为您提到了本地磁盘),您应该有一个文件config/storage.yml
具有类似于以下的块:
local:
service: Disk
root: <%= Rails.root.join('storage') %>
在上面的这个例子中,我将文件存储在rails应用程序根目录中名为
storage
的文件夹中。在该文件夹中,您将找到不打算通过文件资源管理器/查找器导航的嵌套文件夹(但您可以)。通过您的rails应用程序,例如通过视图,您将使用url helpers这还没有很好的文档记录。
在rails控制台中,您可以尝试对名为
Foo
的模型使用has_one_attached :photo
Foo.last.photo.blob.key
它应该给你一个24个字符的字符串。
前两个字符是我在上面指出的文件夹中的一个子文件夹
接下来的两个字符是
子文件夹中有一个文件,其名称与上面打印的密钥匹配(没有扩展名)。那是你的档案。