围绕同一问题的多个问题,活动存储返回文件URL的方式
目前,使用默认设置(以下(云或本地))以某种方式返回以下内容:_domain/_path/_superlong_hash/_original_filename._ext
给定回形针或许多其他现有的宝石,可以自定义_path / _superlong_hash / _original_filename._ext部分,它可能以任何文件的纯净URL结尾
意思是:
有没有一种方法可以使用更多自定义内容来“代理” _path
?
有什么办法可以避免_superlong_hash
吗?
有没有一种方法可以动态(或上传)自定义文件名?
为了使它成为一类文件,如何自定义文件url?
我在这里看到过,那里的人们最终创建了自定义控制器来提供具有适当URL的文件,但让我们承认这是不可行的(IMHO)
最佳答案
我希望ActiveStorage能够尽快证明我错了,但是在编写Rails 5.2时,直接的答案似乎是必须使用“ no go”选项,将自己的控制器捆绑在一起,并对ActiveStorage进行大量修补以暴露文件。
有关代理,请参见:
https://github.com/rails/rails/issues/31419
https://github.com/rails/rails/pull/30465
特别是georgeclaghorn的响应很有趣
要重命名文件:
@user.avatar.blob.update(filename: 'NewFilename.jpg')
处理_superlong_hash / url
我对此没有很好的答案。尽管ActiveStorage使得上传(并在某种程度上易于操纵)文件非常容易,但是它使Rails持之以恒的软件哲学走到了边缘,这使得通过抽象方法来生成URL绕开它的晦涩之处变得相当困难。 ActiveStorage不提供内置方法来执行基本操作,例如永久或直接链接到文件和变体(一旦生成)。因此,文件/图像缓存和漂亮的URL似乎无法在此时使用ActiveStorage开箱即用。