Heroku不允许你上传文件,他们宁愿你上传到云存储服务,如亚马逊s3。但是,为了使用Python上传文件到s3,文件需要保存为你需要的字符串路径...?
dgtucam11#
Heroku在保存文件时的问题是他们有ephemeral filesystem,这意味着您存储在Heroku上的文件不属于初始git存储库,将在dyno重新启动后删除,我认为每24小时发生一次。但他们仍然允许您存储文件约24小时(或直到下一次dyno重新启动),考虑到这一点,您可以在本地存储在一些/tmp目录中以供快速参考,或者您可以使用boto3库将文件上传到AWS S3存储桶。
Heroku
git
dyno
/tmp
boto3
AWS S3
zqry0prt2#
当你使用FileField或ImageField时,只有相对文件路径被保存为数据库中的字符串,Django依赖于你在MEDIA_ROOT中定义的内容(例如,你的S3存储桶的url),并在相对url后面加上文件名(例如,uploads/file. txt)来构建文件的完整路径。
2条答案
按热度按时间dgtucam11#
Heroku在保存文件时的问题是他们有ephemeral filesystem,这意味着您存储在
Heroku
上的文件不属于初始git
存储库,将在dyno
重新启动后删除,我认为每24小时发生一次。但他们仍然允许您存储文件约24小时(或直到下一次dyno重新启动),考虑到这一点,您可以在本地存储在一些
/tmp
目录中以供快速参考,或者您可以使用boto3
库将文件上传到AWS S3
存储桶。zqry0prt2#
当你使用FileField或ImageField时,只有相对文件路径被保存为数据库中的字符串,Django依赖于你在MEDIA_ROOT中定义的内容(例如,你的S3存储桶的url),并在相对url后面加上文件名(例如,uploads/file. txt)来构建文件的完整路径。