如何使用GAE / python处理直接文件上传?

时间:2011-07-28 17:14:19

标签: python google-app-engine

客户端(javascript)使用XMLHttpRequest上传应用程序:

  var req = new XMLHttpRequest();
  req.open('POST', my_app_url, false);
  req.setRequestHeader("Content-Length", req.length);
  req.sendAsBinary(req.binary);

我在服务器端使用数据存储区(不是blobstore)。 如何将上传的文件保存到数据存储区?我发现ServletFileUpload可以与Java一起使用。但是如何用Python做同样的事情?

2 个答案:

答案 0 :(得分:3)

您应该使用self.request.body

class YourUploadHandler(webapp.RequestHandler):
    def post(self):
        your_binary_content = self.request.body

答案 1 :(得分:0)

如果你的意思是在appengine方面,你只需要一个blobproperty。所以......就像......

class SomeEntity(db.Model):
    file_data = db.BlobProperty()

class AddData(webapp.RequestHandler)
    def post(self):
        data = self.request.get("filedata")
        e = SomeEntity(file_data = db.Blob(data))
        e.put()

作为一个说明,我不确定您上面发送的代码是否正确,但您可以使用简单的html格式上传文件,如下所示:

<form action="/url_to_adddata_handler/" method="post">
    <input type="file" name="filedata">
    <input type="submit" value="Submit">
</form>