我尝试通过两个步骤从表单加载文件,并使用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
...
答案 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