围绕同一问题的多个问题,活动存储返回文件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开箱即用。

07-24 09:38
查看更多