【问题标题】:How to upload an image temporarily on Heroku?如何在 Heroku 上临时上传图片?
【发布时间】:2021-09-02 04:37:16
【问题描述】:

我面临以下问题: 我已经将 Django 应用程序部署到 Heroku,并希望使用文件输入上传图像。但它不应该存储在那里,它可以在我重新加载页面后被删除,但我想在那个时候有这个图像的 URL。所以,我完全不知道如何做到这一点,有人可以帮助我吗?

【问题讨论】:

  • Heroku docs推荐亚马逊云存储
  • @ChrisG 谢谢,但如果可能的话,我想将它存储在 Heroku 服务器上。
  • 你不懂。您没有阅读我链接的文档吗?您绝对可以在 heroku 上存储文件几秒钟或几分钟。只是不长久。应用重启后文件消失。
  • U 无法在 heroku 中上传文件。您必须将文件上传到云中,获取 url 并提供该 url。使用“cloudinary”,它是免费的

标签: javascript django heroku


【解决方案1】:

Heroku 文件系统是短暂的 - 这意味着在 dyno 运行时对文件系统的任何更改只会持续到该 dyno 关闭或重新启动。每个测功机都使用最新部署的文件系统的干净副本启动。这类似于有多少基于容器的系统(例如 Docker)在运行。

此外,在正常操作下,dynos 每天都会在一个称为“循环”的过程中重新启动。

了解更多信息 阅读本文档 https://help.heroku.com/K1PPS2WM/why-are-my-file-uploads-missing-deleted

我不想使用 aws s3 存储桶,而是使用可快速免费使用高达 25gb 的 cloudinary 如何使用它 阅读此完整文档https://www.section.io/engineering-education/uploading-images-to-cloudinary-from-django-application/ 对于静态文件使用白噪声 我也在使用和推荐 我希望这能帮助你解决你的问题

【讨论】:

  • 谢谢,但我不想长时间存储它,只需要几秒钟。真的有那么不可能吗?
  • 您是否在代码中编写了任何逻辑以在一段时间后删除该照片,或者您只是希望它自动执行此操作
  • 是的,我有一个脚本,它可以在本地机器上完美运行,但是当我尝试在 Heroku 上执行此操作时,它找不到我的文件。
  • 我尝试执行default_storage.save('some_folder/uploaded_picture.png', ContentFile(picture.read())) 之类的操作,但无法通过 URL (https://myherokuapp/some_folder/uploaded_picture.png) 访问它
  • @Artem 我不理解你,所以你想短时间存储你的图像,然后想完全删除它,所以如果你不使用 s3 或 cloudinary,heroku 会为你做同样的事情那么问题出在哪里
【解决方案2】:

Heroku 不允许永久存储图像。他们在article 中说:

Heroku 有一个“临时”硬盘,这意味着您可以将文件写入磁盘,但这些文件在应用程序重新启动后将不会保留。

解决此问题的一种临时方法是将图像存储在 PostgreSQL 数据库 (StackOverflow Thread) 中。更好的解决方案是将您的图片上传到 Amazon S3 存储桶,并且只将图片 URL 存储在您的数据库中。

【讨论】:

  • 谢谢,但真的不可能在某个“临时”文件夹中存储几秒钟吗?
  • 是的,您当然可以将文件上传到 heroku 文件系统。他们只是不留在那里。一旦您重新启动服务器,它们就会被删除。
猜你喜欢
  • 2021-12-19
  • 2019-04-20
  • 1970-01-01
  • 2018-07-03
  • 2013-12-20
  • 1970-01-01
  • 2014-08-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多