簡體   English   中英

Google App Engine上的Django:無法上傳圖片

[英]Django on Google App Engine: cannot upload images

我正在嘗試在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概述 ,在這里您可以看到有關如何上傳文件的完整示例。

此外,如果您將圖像上傳為Blob,則可以通過提供blob_key來通過get_serving_url()獲取圖像服務URL。 使用此URL,您可以為特定圖像請求任何大小,甚至可以在服務器端進行裁剪。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM