<p>是的,您可以使用urlphetch使它成为一个单独的代码块。我的方法是:</p>
<pre class="lang-python prettyprint-override"><code>class UploadHandler(blobstore_handlers.BlobstoreUploadHandler):
def post(self):
upload_files = self.get_uploads('file')
if len(upload_files) > 0 :
blob_info = upload_files[0]
self.response.write(str(blob_info.key()))
else:
self.error(404)
class SomeHandler(webapp.RequestHandler):
def post(self):
file = self.request.POST.get('file')
if (file is not None):
# Use urlfetch to call to the blob upload url and get result
# Just copy the same request body and header and pass to UploadHandler here
result = urlfetch.fetch(
url= blobstore.create_upload_url('/upload'),
payload=self.request.body,
method=urlfetch.POST,
headers=self.request.headers)
if result.status_code == 200:
blob_key_str = result.content
# Get blob key
blob_key = blobstore.BlobKey(blob_key_str)
# Maybe a url for the file
blob_url = images.get_serving_url(blob_key_str, 400)
</code></pre>
<p>通过这种方式,您可以始终将文件上载到SomeHandler,而不必先获取上载URL,然后才进行上载。在</p>
<p>希望有帮助!在</p>