我使用arc来保存用户上传并添加到数据库中。在localhost上,一切都很好(在lib/app_web/endpoint.ex中)
lib/app_web/endpoint.ex
plug Plug.Static, at: "/uploads", from: Path.expand("./uploads"), gzip: false
我不知道我可以在Heroku上的哪里保存上传,以便我可以使用https://app.herokuapp.com/uploads/images/...访问它们
https://app.herokuapp.com/uploads/images/...
wz1wpwve1#
直接上传文件到Heroku的问题是,每次你的dyno停止/重新启动时,它们都会被删除。所以你需要在Heroku应用程序之外存储这些文件。一个解决方案是使用AWS S3(如果你没有很多数据,它相当便宜,如果你存储20 GB,有100 GB的流量,每月半美元)。从Heroku help pages:Heroku文件系统是短暂的-这意味着在dyno运行时对文件系统的任何更改都只会持续到dyno关闭或重新启动。每个dyno都使用最近部署的文件系统的干净副本启动。这与许多基于容器的系统(如Docker)的操作类似。此外,在正常操作下,dynos将在一个被称为“循环”的过程中每天重新启动。这两个事实意味着Heroku上的文件系统不适合持久存储数据。(用于数据)或专用文件存储服务,如AWS S3(对于静态文件)。如果不使用“I don“我不想通过AWS创建一个帐户来创建S3存储桶,我们这里还有一些插件,用于处理静态资产的存储和处理https://elements.heroku.com/addons
1条答案
按热度按时间wz1wpwve1#
直接上传文件到Heroku的问题是,每次你的dyno停止/重新启动时,它们都会被删除。所以你需要在Heroku应用程序之外存储这些文件。一个解决方案是使用AWS S3(如果你没有很多数据,它相当便宜,如果你存储20 GB,有100 GB的流量,每月半美元)。
从Heroku help pages:
Heroku文件系统是短暂的-这意味着在dyno运行时对文件系统的任何更改都只会持续到dyno关闭或重新启动。每个dyno都使用最近部署的文件系统的干净副本启动。这与许多基于容器的系统(如Docker)的操作类似。
此外,在正常操作下,dynos将在一个被称为“循环”的过程中每天重新启动。
这两个事实意味着Heroku上的文件系统不适合持久存储数据。(用于数据)或专用文件存储服务,如AWS S3(对于静态文件)。如果不使用“I don“我不想通过AWS创建一个帐户来创建S3存储桶,我们这里还有一些插件,用于处理静态资产的存储和处理https://elements.heroku.com/addons