如何在django google app引擎上传文件?

dha*_*ana 0 django google-app-engine python-2.7

我是Google App Engine的新手.我在谷歌应用引擎中部署了纯django应用程序.它工作正常.但是我写了django文件上传功能,如下图所示,

def forhandler(list, project_id, task_id, request):
    for i in list:
        filename = i
        extension = filename.content_type
        print i
        newdoc = FileUpload(project_id=project_id, task_id=task_id, file=filename, filetype=extension)
        newdoc.save()
Run Code Online (Sandbox Code Playgroud)

当我运行./manage.py运行服务器时.上述功能正常工作并正确上传文件.当我使用谷歌应用程序引擎意味着dev_appserver.py my_project.这是完美的,但是当我使用上述功能上传文件时它会出现如下所示的错误,

Exception Value: [Errno 30] Read-only file system: u'/home/nyros/Desktop/projectstat/projectstat/media/documents/2013/05/24/1354676051_chasm_fishing_w1.jpeg'
Run Code Online (Sandbox Code Playgroud)

如何使用django和谷歌应用引擎上传文件?请解决我的问题.谢谢......

Tre*_*hns 5

这里的问题是App Engine使用只读文件系统,默认的Django文件上传机制想要将文件存储在磁盘上.(无论您是否使用App Engine,将图像存储在普通数据库中都是一个坏主意.)

相反,您应该使用AppEngine的Blobstore API来保存图像.这是App Engine提供的特殊存储,用于存储用户上传的大量数据.

好消息是有一个插件可以为您处理所有这些:http://www.allbuttonspressed.com/projects/django-filetransfers

只需按照那里的说明进行操作即可.

(注意:我只用django-nonrel尝试过这个.我从来没有尝试过使用香草Django.)