我使用arc来保存用户上传并添加到db。在localhost一切正常(在lib/app_web/endpoint.ex
)
plug Plug.Static,
at: "/uploads", from: Path.expand("./uploads"), gzip: false
我无法理解我可以在heroku上保存上传内容,以便我可以使用https://app.herokuapp.com/uploads/images/...
访问它们
将文件直接上传到Heroku的事情是,每次你的dyno停止/重启时它们都会被删除。因此,您需要将这些文件存储在Heroku应用程序之外。一种解决方案是使用AWS S3(如果你没有大量的数据,这是非常便宜的,如果你存储20 GB并且有100GB的流量,则每月半美元)。
Heroku文件系统是短暂的 - 这意味着在dyno运行时对文件系统的任何更改只会持续到该dyno关闭或重新启动。每个dyno都使用最新部署的文件系统的干净副本进行引导。这类似于Docker等基于容器的系统运行的数量。
此外,在正常操作下,dynos将在称为“骑自行车”的过程中每天重新启动。
这两个事实意味着Heroku上的文件系统不适合持久存储数据。如果您需要存储数据,我们建议使用数据库插件,如Postgres(用于数据)或专用文件存储服务,如AWS S3(用于静态文件)。如果您不想在AWS中设置帐户来创建S3存储桶,我们这里也有插件来处理静态资产的存储和处理https://elements.heroku.com/addons