我增加了几本关于heroku数据的书。每个模型都显示在heroku应用站点上,并显示其图像。我的模特们都有“形象”。我把这些图片从我的个人电脑文件夹,当我打开这个应用程序2-3个小时后,图书图像消失。我想是因为我关掉了一台电脑,在那里我拍摄了这些照片。我怎样才能正确地处理这些图像呢?
发布于 2021-12-26 02:42:49
我想是因为我关掉了一台电脑,在那里我拍摄了这些照片
这可能不是它,因为Heroku无法访问您计算机上的文件。
当您将一个文件上传到Django管理员时,它会查看DEFAULT_FILE_STORAGE设置配置,以确定如何存储该文件。默认情况下,它使用django.core.files.storage.FileSystemStorage,这意味着它在MEDIA_ROOT定义的位置将上传的文件写入dyno的文件系统。
问题是,dynos是短暂的,它们可以在没有任何警告的情况下被销毁、重新启动和移动,它取代了您的文件系统。这意味着那些上传的文件只是被删除,没有跟踪,但是ImageField引用仍然认为它们在那里。
此问题的解决方案是更新项目的DEFAULT_FILE_STORAGE以使用永久的东西,例如与S3兼容的对象存储。在Heroku & Django土地上,一个常见的解决方案是在使用django-storages的同时使用Heroku的斗牛士。此解决方案将您的文件上载到一个持久的数据存储区,该数据存储在dyno重新启动之后,而不是写入经常被删除的dyno文件系统。
我知道这可能会令人望而生畏,所以我写了一个非常好的Heroku + Bucketeer过程的这篇文章。
https://stackoverflow.com/questions/70481782
复制相似问题