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

Rails助手如何为AWS存储桶路径的子目录设置通配符?

解决S3路径子目录通配符匹配问题(Rails + Fog)

S3对象存储本身不支持**这类通配符语法,Fog调用中的prefix参数仅做前缀匹配,不需要额外加通配符。要获取images/patient_id/下所有子目录层级的文件,只需要调整prefix设置并过滤目录占位符即可。

修改后的助手方法代码:

def get_files(patient_number)
  connection = Fog::Storage.new(
    provider: 'AWS',
    aws_access_key_id: AWS_ACCESS_KEY_ID,
    aws_secret_access_key: AWS_SECRET_ACCESS_KEY
  )
  bucket = connection.directories.get(AMAZON_BUCKET, prefix: "images/#{patient_number}/")
  bucket.files.map(&:key).reject { |key| key.end_with?('/') }
end

关键说明:

  • 将prefix设为"images/#{patient_number}/",S3会返回所有以该路径开头的对象,自动包含后续所有子目录层级的文件
  • 调用.reject { |key| key.end_with?('/') }是为了过滤掉S3中用于模拟目录的空对象(S3本质是扁平存储,没有真实目录结构),只保留实际的文件路径
  • 原方法中的参数image_folder未被使用,这里改成了patient_number让参数更贴合实际用途

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:01:55