无法在Heroku的产品上加载用arc上传的用户图像

时间:2019-04-03 12:46:16

标签: heroku elixir automatic-ref-counting phoenix

我使用arc来保存用户上传的内容并添加到数据库中。在localhost上,一切正常(在lib/app_web/endpoint.ex中)

plug Plug.Static,
    at: "/uploads", from: Path.expand("./uploads"), gzip: false

我不知道可以将上传的内容保存在heroku上的什么地方,所以我可以使用https://app.herokuapp.com/uploads/images/...

访问它们

1 个答案:

答案 0 :(得分:0)

直接将文件上传到Heroku的事情是,每次您的dyno停止/重新启动时,它们都会被删除。因此,您需要将这些文件存储在Heroku应用程序之外。一种解决方案是使用AWS S3(如果您没有大量数据,这将非常便宜,例如,如果您存储20 GB并具有100GB的流量,则每月半美元)。

来自Heroku help pages

  

Heroku文件系统是临时的-这意味着对   在dyno运行时,文件系统仅持续运行,直到该dyno被运行   关闭或重新启动。每个dyno靴子都带有干净的副本   最新部署中的文件系统。这类似于多少   基于容器的系统(例如Docker)可以运行。

     

此外,在正常操作下,测功机每天都会在   该过程称为“循环”。

     

这两个事实意味着Heroku上的文件系统不适合   持久存储数据。如果您需要存储数据,我们   建议使用数据库插件,例如Postgres(用于数据)或   专用文件存储服务,例如AWS S3(用于静态文件)。如果   您不想在AWS上创建账户来创建S3存储桶   这里也有用于处理静态存储和处理的插件   资产https://elements.heroku.com/addons