You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Active Storage存储附件的本地目录与原文件名组合完整路径

Active Storage 本地文件完整路径获取方案

以下方案仅适用于 Active Storage 配置为本地磁盘存储的场景,云存储场景无法获取本地文件路径

实现逻辑

Active Storage 本地磁盘存储默认不会用原始文件名作为磁盘上的存储文件名,会自动生成唯一key作为文件名存储,如果你需要拼接「本地存储根目录+原始文件名」格式的路径,可按以下步骤操作:

操作步骤

  • 第一步:获取 Active Storage 本地存储根目录
storage_root = ActiveStorage::Blob.service.root
  • 第二步:获取对应附件的blob对象,拼接目标路径
    假设你的关联模型为User,附件字段为avatar,示例代码如下:
# 获取实例对象
user = User.find(1)
blob = user.avatar.blob

# 拼接符合要求的完整路径,示例输出格式:/home/myworkspace/project/storage/original_filname.extension
target_full_path = File.join(storage_root, blob.filename.to_s)

扩展说明

如果你需要获取文件在磁盘上的实际存储路径(文件名为系统生成的唯一key,非原始文件名),可直接调用以下方法:

actual_storage_path = ActiveStorage::Blob.service.path_for(blob.key)

如果需要将实际存储的文件复制到你要求的「原始文件名」路径下,可追加代码:

FileUtils.cp(actual_storage_path, target_full_path)

内容的提问来源于stack exchange,提问作者Huzaifa Aslam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 15:18:03