2011-11-20 40 views
1

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

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 
      ... 

回答

1

对于blobstore有一个新的writing files实验代码,它可能适合您的需求。报价:

的App Engine可让您以编程方式创建Blob存储斑点,提供了一个类似文件的API,你可以用它来读取和写入斑点

+0

这是解决我的问题的最好办法,谢谢。 – Raf

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') 

您可以拨打表单验证请求处理程序中的Blob存储和转移到根据验证是否通过不同的路径或不。

这里的链接到提问/回答更多的细节:Need help processing upload form with Google App Engine Blobstore

相关问题