如何在google appengine,python中调用请求处理程序

时间:2011-11-20 20:00:14

标签: python google-app-engine blobstore

我尝试通过两个步骤从表单加载文件,并使用BlobStoreUploadHandler。 在第一步,我使用请求处理程序重新获取表单数据,并检查它是否有效(表单action =“/ a”)。然后,如果表单有效,我想重写表单操作到upload_url,其中

upload_url = blobstore.create_upload_url('/a') 

并使用新的path_info调用post请求。如何通过更改的path_info调用请求?

class SendFormwithFile(webapp.RequestHandler):
    ...
    def post(self):
        ... 
        if form.is_valid():
            self.request.path_info = upload_url

        else:
            ...
            return form with error message
            ...

2 个答案:

答案 0 :(得分:1)

有一个新的实验代码writing files可以满足您的需求。引用:

  

App Engine允许您以编程方式创建blobstore blob,提供类似文件的API,可用于读取和写入blob

答案 1 :(得分:0)

我不是100%确定你为什么需要首先使用请求处理程序处理它。

以下是我使用的示例代码,该代码最初是作为我的问题的答案发布的:

class UploadHandler(blobstore_handlers.BlobstoreUploadHandler):
    def post(self):
        try:
            upload_files = self.get_uploads('file')
            blob_info = upload_files[0]

            newFile = StoredFiles()
            newFile.nickname = self.request.get('nickname')
            newFile.blobkey = blob_info.key()
            newFile.put()

            self.redirect('/')
        except:
            self.redirect('/upload_failure.html')

您可以在blobstore的请求处理程序中调用表单验证,然后根据验证是否通过来移至不同的路径。

以下是问题/答案的链接以及更多详细信息:Need help processing upload form with Google App Engine Blobstore