我使用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/...
答案 0 :(得分:0)
直接将文件上传到Heroku的事情是,每次您的dyno停止/重新启动时,它们都会被删除。因此,您需要将这些文件存储在Heroku应用程序之外。一种解决方案是使用AWS S3(如果您没有大量数据,这将非常便宜,例如,如果您存储20 GB并具有100GB的流量,则每月半美元)。
Heroku文件系统是临时的-这意味着对 在dyno运行时,文件系统仅持续运行,直到该dyno被运行 关闭或重新启动。每个dyno靴子都带有干净的副本 最新部署中的文件系统。这类似于多少 基于容器的系统(例如Docker)可以运行。
此外,在正常操作下,测功机每天都会在 该过程称为“循环”。
这两个事实意味着Heroku上的文件系统不适合 持久存储数据。如果您需要存储数据,我们 建议使用数据库插件,例如Postgres(用于数据)或 专用文件存储服务,例如AWS S3(用于静态文件)。如果 您不想在AWS上创建账户来创建S3存储桶 这里也有用于处理静态存储和处理的插件 资产https://elements.heroku.com/addons