活动存储/清理文件URL

Ben*_*Ben 8 cloud upload ruby-on-rails rails-activestorage

围绕同一问题的多个问题,主动存储返回文件URL的方式

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

_domain/_path/_superlong_hash/_original_filename._ext

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

意思是:

  • 有没有办法_path用更自定义的东西"代理" ?
  • 有没有办法避免_superlong_hash
  • 有没有办法自动定制文件名(或上传)?

为了使它成为一个单行,如何定制文件URL?

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

JSp*_*ang 4

我希望 ActiveStorage 很快就能证明我是错的,但在编写 Rails 5.2 时,直接的答案似乎是您必须选择“不走”选项,将您自己的控制器组合在一起,并对 ActiveStorage 进行大量修补以公开文件。

对于代理请参阅:

https://github.com/rails/rails/issues/31419

https://github.com/rails/rails/pull/30465

  • 尤其是乔治克拉霍恩的反应很有趣

对于重命名文件:

@user.avatar.blob.update(filename: 'NewFilename.jpg')
Run Code Online (Sandbox Code Playgroud)

操作 _superlong_hash / url

对于这个问题我没有什么好的答案。尽管 ActiveStorage 使上传文件变得极其容易(并且在某种程度上易于操作),但它将 Rails 固执己见的软件哲学推向了边缘,使得通过抽象 URL 生成方法来绕过它的晦涩难懂变得相当困难。ActiveStorage 不提供内置方法来执行基本操作,例如生成文件和变体的永久或直接链接。因此,目前看来,文件/图像缓存和漂亮的 URL 似乎无法通过 ActiveStorage 实现开箱即用。