- How can I retrieve a file object from the blobstore within a handler?
- class SendDocuments(webapp2.RequestHandler):
- def post(self):
- document_key = self.request.get("document_key")
- document_key = Key(str(document_key))
- the_document = DocumentsModel.all().filter("__key__ =", document_key).get()
- file_data = blobstore.BlobInfo.get(str(the_document.blobstore_key)) # returns a blobinfo object
- file_data.open() # returns a blobreader object
- file_data.open().read() # returns a string
- class ServeSavedDocument(blobstore_handlers.BlobstoreDownloadHandler):
- def get(self, blob_key):
- self.send_blob(blob_key, save_as=True)
- return
- class SendDocuments(webapp2.RequestHandler):
- def post(self):
- document_key = self.request.get("document_key")
- document_key = Key(str(document_key))
- the_document = DocumentsModel.all().filter("__key__ =", document_key).get()
- grab_blob = ServeSavedDocument()
- file_data = grab_blob.get(self, str(the_document.blobstore_key))
- 'NoneType' object has no attribute 'headers'
- blob_key = files.blobstore.get_blob_key(file_name)
- from google.appengine.api import urlfetch
- from poster.encode import multipart_encode
- # assuming here that file_data is the file object
- payload = {}
- payload['user_id'] = '1234123412341234'
- payload['test_file'] = MultipartParam('test_file', filename=file_data.filename,
- filetype=file_data.type,
- fileobj=file_data.file)
- data,headers= multipart_encode(payload)
- send_url = "http://127.0.0.0/"
- t = urlfetch.fetch(url=send_url, payload="".join(data), method=urlfetch.POST, headers=headers)
- class SendDocuments(webapp2.RequestHandler):
- def post(self):
- document_key = self.request.get("document_key")
- document_key = Key(str(document_key))
- the_document = DocumentsModel.all().filter("__key__ =", document_key).get()
- file_data = blobstore.BlobInfo.get(str(the_document.blobstore_key))
- payload = {}
- payload['user_id'] = '1234123412341234'
- payload['test_file'] = MultipartParam('the_file', filename="something",
- filetype=file_data.content_type,
- fileobj=file_data.open())
- # blob_key = ..
- # Instantiate a BlobReader for a given Blobstore value.
- blob_reader = blobstore.BlobReader(blob_key)
- # Read the entire value into memory. This may take a while depending
- # on the size of the value and the size of the read buffer, and is not
- # recommended for large values.
- value = blob_reader.read()
- def mime_type(filename):
- return guess_type(filename)[0]
- class ServeSavedDocument(blobstore_handlers.BlobstoreDownloadHandler):
- def get(self):
- blob_key = self.request.get("blob_key")
- if blob_key:
- blob_info = blobstore.get(blob_key)
- if blob_info:
- save_as1 = blob_info.filename
- type1=mime_type(blob_info.filename)
- self.send_blob(blob_info,content_type=type1,save_as=save_as1)