使用 Python 在 Heroku 上无法上传文件?

时间:2021-01-20 23:49:55

标签: python django flask heroku

Heroku 不允许您上传文件,而是您将它们上传到云存储服务,例如 Amazon s3。但是,为了使用 Python 将文件上传到 s3,需要保存文件,因为您需要字符串路径...?

2 个答案:

答案 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

相关问题