我在 heroku 上部署 django 项目,它工作正常,但是在 django admin 中,当我尝试上传图像时出现错误:
OSError at /admin/blocks/block/add/
[Errno 30] Read-only file system: '/home/goldwedd'
我在 heroku 上部署 django 项目,它工作正常,但是在 django admin 中,当我尝试上传图像时出现错误:
OSError at /admin/blocks/block/add/
[Errno 30] Read-only file system: '/home/goldwedd'
这是设计使然。
您的应用程序被编译成一个 slug 以供 dyno 管理器快速分发。slug 的文件系统是只读的,这意味着您不能动态写入文件系统以进行半永久存储。不支持以下类型的行为:
- 在公共目录中缓存页面
- 将上传的资产保存到本地磁盘(例如,使用 attachment_fu 或回形针)
- 使用 Ferret 编写全文索引
- 写入文件系统数据库,如 SQLite 或 GDBM
- 访问像 git-wiki 这样的应用程序的 git 存储库
https://devcenter.heroku.com/articles/read-only-filesystem
如果要上传文件,则需要将文件上传到 S3 或django- storages 支持的任何其他存储后端。
是的,您不能在 heroku 上传媒体文件。只有通过 git 你才能部署东西,如果你部署静态或媒体文件,它们将有一些变通方法可用。
对于实时文件上传,您应该考虑使用 Amazon S3 等外部服务。django 有一个很好的库来处理它(据我所知,它也是由 heroku 开发网站建议的):django-storages