Rails: 获取上传到 Minio 文件的纯文本路径

Rails: getting plain text path to file uploaded to Minio

我有一个 Minio 服务器,我在其中使用 ActiveStorage 上传文件,这让我很沮丧,因为我似乎无法为我的上传获取 "real" 文件名,例如,如果我上传 "vader.jpg"我得到这条路:

image_tag user.avatar.variant(resize: "100x100")

http://minio:9000/railsappdevelopment/variants/VTPPGy7qnLPWHPATLbpfp6aq/2baa7301537de02528c8347e9137a2c84c36c385682e395ae23b967891ba9d8b?response-content-disposition=inline%3B%20filename%3D%22vader.jpg%22%3B%20filename%2A%3DUTF-8%27%27vader.jpg&response-content-type=image%2Fjpeg&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=root%2F20190628%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190628T133239Z&X-Amz-Expires=300&X-Amz-SignedHeaders=host&X-Amz-Signature=2b18863d1600f1e402f6b4582ee27cfe3f80532b2d0fb110ea0581557f6b5264

我不想要那些垃圾,我不希望 URL 过期,我想要的只是 http://minio:9000/railsappdevelopment/id/vader.jpg

存储桶 public 并且是只读的。

任何人都知道如何摆脱它们 URL 参数?

不幸的是,这就是 ActiveStorage 的工作方式 - 它使用随机 ID 作为存储密钥(=minio 的文件名),即使没有文件扩展名,所以浏览器正确解释图像 content-type header 应该提供给 minio(通常由文件扩展名推断),所有对内容的请求都应该是动态的(带有过期链接等)

rails 个问题中有多个请求(例如 #30431, #31419),但还没有积极的反应。

因此,如果您对图像托管的要求不同于 basecamp(由 activestorage 满足)- 截至目前,您必须求助于其他一些库,如 shrine 或自定义解决方案。