gpt4 book ai didi

Google App Engine 上的 Django : cannot upload images

转载 作者:行者123 更新时间:2023-12-04 00:43:25 24 4
gpt4 key购买 nike

我正在尝试为我的 Django 应用程序中的模型实现一个 ImageField。该应用程序在 Google App Engine 上运行。但是在上传时(本地机器,使用 GAE SDK 1.7.7)我得到一个[Errno 78] Function not implemented

错误源于django.core.files.storage.FileSystemStorage._save()中对os.makedirs()的调用;调用 makedirs 的参数是:

u'/Users/.../PycharmProjects/myproject/media/uploaded

SETTINGS.PY 中我的MEDIA_ROOT 条目包含:

/Users/.../PycharmProjects/myproject/media/

SETTINGS.PY 中我的 MEDIA_URL 条目包含:

/media/

媒体目录包含一个名为“上传”的子目录。我检查了权限,他们需要读/写访问权限。

我的 ImageField 的字段定义是:

image = models.ImageField(upload_to = "uploaded/"

出于某种原因,Django 想要创建已经存在的目录。使用 Django 控制台 os.path.exists(u'path/to/media/upload') 返回 True(这是正确的)所以我不明白为什么 Django 要创建目录。

此外,我使用 Google Cloud SQL 进行存储并安装 PILLOW 进行图像处理。我还在我的 app.yaml 中添加了 PIL 作为库。

我可能遗漏了一些基本的东西,但目前我对造成这种情况的原因一无所知......

最佳答案

是的,我认为您在这里遗漏了一些非常基本的东西。您无权访问 Google App Engine 上的文件系统,因此 os.makedirs() 将无法运行。如果您想上传图片(或一般文件),您必须将它们存储在 Blobstore 或 Google Cloud Storage 中。在做任何其他事情之前,我建议您先查看 Blobstore Python API Overview您可以在其中查看有关如何上传文件的完整示例。

此外,如果您将图像上传为 blob,您将能够通过 get_serving_url() 获取图像服务 URL。通过提供 blob_key。使用此 URL,您可以为特定图像请求任何尺寸,甚至无需任何额外工作即可在服务器端裁剪它。

关于Google App Engine 上的 Django : cannot upload images,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16014147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com