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

时间:2019-06-28 13:43:43

标签: ruby-on-rails rails-activestorage minio

我有一个Minio服务器,我在其中使用ActiveStorage上传文件,这让我感到沮丧,因为我似乎无法获得上载的“真实”文件名,例如,如果我上载“ 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

存储桶是公共的并且是只读的。

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

1 个答案:

答案 0 :(得分:1)

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

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

因此,如果您对图像托管的要求与大本营(由主动存储完全满足)的要求有所不同-到目前为止,您必须诉诸于神社或自定义解决方案等其他库。