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

如何使用GAE/python处理直接文件上载?,python,google-app-engine,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)。 如何将上载的文件保存到数据存储?我发现Serv

客户端(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如何做到这一点呢?

如果你是说在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>

如果你的意思是在外观方面,你只需要拥有一个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>

您应该使用
self.request.body

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

您应该使用
self.request.body

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

我没有表格。所以我不能使用
self.request.get(“filedata”)
,但看起来像
self.request.body
做了我需要的;)。我没有表格。所以我不能使用
self.request.get(“filedata”)
,但看起来像
self.request.body
做了我需要的;)。