Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 1st, 2012  |  syntax: None  |  size: 3.11 KB  |  hits: 13  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. How can I retrieve a file object from the blobstore within a handler?
  2. class SendDocuments(webapp2.RequestHandler):
  3.     def post(self):
  4.         document_key = self.request.get("document_key")
  5.         document_key = Key(str(document_key))
  6.         the_document = DocumentsModel.all().filter("__key__ =", document_key).get()
  7.         file_data = blobstore.BlobInfo.get(str(the_document.blobstore_key)) # returns a blobinfo object
  8.         file_data.open() # returns a blobreader object
  9.         file_data.open().read() # returns a string
  10.        
  11. class ServeSavedDocument(blobstore_handlers.BlobstoreDownloadHandler):
  12.   def get(self, blob_key):
  13.     self.send_blob(blob_key, save_as=True)
  14.     return
  15.  
  16. class SendDocuments(webapp2.RequestHandler):
  17.     def post(self):
  18.         document_key = self.request.get("document_key")
  19.         document_key = Key(str(document_key))
  20.         the_document = DocumentsModel.all().filter("__key__ =", document_key).get()
  21.         grab_blob = ServeSavedDocument()
  22.         file_data = grab_blob.get(self, str(the_document.blobstore_key))
  23.        
  24. 'NoneType' object has no attribute 'headers'
  25.        
  26. blob_key = files.blobstore.get_blob_key(file_name)
  27.        
  28. from google.appengine.api import urlfetch
  29. from poster.encode import multipart_encode
  30. # assuming here that file_data is the file object
  31. payload = {}
  32. payload['user_id'] = '1234123412341234'
  33. payload['test_file'] = MultipartParam('test_file', filename=file_data.filename,
  34.                                       filetype=file_data.type,
  35.                                       fileobj=file_data.file)
  36. data,headers= multipart_encode(payload)
  37. send_url = "http://127.0.0.0/"
  38. t = urlfetch.fetch(url=send_url, payload="".join(data), method=urlfetch.POST, headers=headers)
  39.        
  40. class SendDocuments(webapp2.RequestHandler):
  41.     def post(self):
  42.         document_key = self.request.get("document_key")
  43.         document_key = Key(str(document_key))
  44.         the_document = DocumentsModel.all().filter("__key__ =", document_key).get()
  45.         file_data = blobstore.BlobInfo.get(str(the_document.blobstore_key))
  46.         payload = {}
  47.         payload['user_id'] = '1234123412341234'
  48.         payload['test_file'] = MultipartParam('the_file', filename="something",
  49.                                       filetype=file_data.content_type,
  50.                                       fileobj=file_data.open())
  51.        
  52. # blob_key = ..
  53.  
  54. # Instantiate a BlobReader for a given Blobstore value.
  55. blob_reader = blobstore.BlobReader(blob_key)
  56. # Read the entire value into memory. This may take a while depending
  57. # on the size of the value and the size of the read buffer, and is not
  58. # recommended for large values.
  59. value = blob_reader.read()
  60.        
  61. def mime_type(filename):
  62.     return guess_type(filename)[0]
  63.     class ServeSavedDocument(blobstore_handlers.BlobstoreDownloadHandler):
  64.         def get(self):
  65.             blob_key = self.request.get("blob_key")
  66.             if blob_key:
  67.                 blob_info = blobstore.get(blob_key)              
  68.                 if blob_info:
  69.                     save_as1 =  blob_info.filename
  70.                     type1=mime_type(blob_info.filename)
  71.                     self.send_blob(blob_info,content_type=type1,save_as=save_as1)