Heroku 不允许您上传文件,而是您将它们上传到云存储服务,例如 Amazon s3。但是,为了使用 Python 将文件上传到 s3,需要保存文件,因为您需要字符串路径...?
答案 0 :(得分:2)
Heroku 保存文件时的问题是它们有 ephemeral filesystem,这意味着您存储在 Heroku
上的不属于初始 git
存储库的文件将是dyno
重新启动后删除,我认为每 24 小时发生一次。
但它们仍然允许您将文件存储约 24 小时(或直到下一次 dyno 重新启动),考虑到这一点,您可以将文件本地存储在某个 /tmp
目录中以供快速参考,或者您可以上传文件到 AWS S3
存储桶使用 boto3
库。
答案 1 :(得分:0)
当您使用 FileField 或 ImageField 时,只有相对文件路径在数据库中保存为字符串。 Django 依赖于您在 MEDIA_ROOT 中定义的内容(例如 S3 存储桶的 url),并将相对 url 附加到文件名(例如,uploads/file.txt)以构建文件的完整路径.检查 documentation