Rog*_*ger 3 django google-app-engine
我正在尝试为我的 Django 应用程序中的模型实现一个 ImageField。该应用程序在 Google App Engine 上运行。但是在上传(本地机器,使用 GAE SDK 1.7.7)时,我得到一个[Errno 78] Function not implemented
.
错误源自对os.makedirs()
in的调用django.core.files.storage.FileSystemStorage._save()
;调用的参数makedirs
是:
u'/Users/.../PycharmProjects/myproject/media/uploaded
Run Code Online (Sandbox Code Playgroud)
我的MEDIA_ROOT
条目SETTINGS.PY
包含:
/Users/.../PycharmProjects/myproject/media/
Run Code Online (Sandbox Code Playgroud)
我的MEDIA_URL
条目SETTINGS.PY
包含:
/media/
Run Code Online (Sandbox Code Playgroud)
媒体目录包含一个名为“已上传”的子目录。我检查了权限,他们需要读/写访问权限。
我的 ImageField 的字段定义是:
image = models.ImageField(upload_to = "uploaded/"
Run Code Online (Sandbox Code Playgroud)
出于某种原因,Django 想要创建已经存在的目录。使用 Django 控制台os.path.exists(u'path/to/media/upload')
返回 True(这是正确的),所以我不明白为什么 Django 要创建目录。
此外,我使用 Google Cloud SQL 进行存储并安装 PILLOW 进行图像处理。我还在我的app.yaml
.
我可能遗漏了一些基本的东西,但目前对导致这种情况的原因一无所知......
是的,我认为您在这里缺少一些非常基本的东西。您无权访问 Google App Engine 上的文件系统,因此os.makedirs()
无法使用。如果您想上传图像(或一般文件),您必须将它们存储在 Blobstore 或 Google Cloud Storage 中。在做任何其他事情之前,我建议您先阅读Blobstore Python API 概述,在那里您可以看到有关如何上传文件的完整示例。
此外,如果您将图像上传为 blob,您将能够get_serving_url()
通过提供blob_key
. 使用此 URL,您可以请求特定图像的任何大小,甚至无需任何额外工作即可在服务器端裁剪它。
归档时间: |
|
查看次数: |
1383 次 |
最近记录: |