8

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

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

_domain/_path/_superlong_hash/_original_filename._ext

给定回形针或许多其他现有的 gem, _path/_superlong_hash/_original_filename._ext 部分可以自定义,最终可能会出现在任何文件的干净 url

意思是:

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

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

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

4

1 回答 1

4

我希望 ActiveStorage 很快证明我错了,但是在编写 Rails 5.2 时,直接的答案似乎是你必须选择“不去”选项,将你自己的控制器组合在一起并大量修补 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 开箱即用地完成。

于 2018-06-21T12:23:59.483 回答