活动存储/清理文件URL

时间:2018-04-11 06:23:09

标签: ruby-on-rails upload cloud rails-activestorage

关于同一问题的多个问题,主动存储返回文件网址的方式

现在使用默认设置,以下(云或本地)以某种方式返回以下内容:

_domain/_path/_superlong_hash/_original_filename._ext

鉴于回形针或许多其他现有的宝石,_path / _superlong_hash / _original_filename._ext部分可以自定义,最终可以在任何文件的干净网址中

意思是:

  • 有没有办法代理"代理" _path有更多自定义的内容吗?
  • 有没有办法避免_superlong_hash
  • 有没有办法动态(或上传)自定义文件名?

要使它成为一个单行,如何自定义文件URL?

我已经在这里和那里看到人们最终创建自定义控制器以提供具有体面网址的文件,但是让我们承认这是不行(恕我直言)

1 个答案:

答案 0 :(得分:3)

我希望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 /网址

我对此没有很好的答案。尽管ActiveStorage使得上传(并在某种程度上易于操作)文件非常容易,但是它使Rails持之以恒的软件哲学走到了边缘,这使得通过抽象方法来生成URL绕开它的晦涩之处变得相当困难。 ActiveStorage不提供任何内置方法来执行基本操作,例如永久或直接链接到生成的文件和变体。因此,在当前时间点似乎无法通过ActiveStorage开箱即用地完成文件/图像缓存和漂亮的url。