Belvi Nosakhare
Belvi Nosakhare

Reputation: 3255

Read File from GAE blobstore

Using the code below,

class MainHandler(webapp.RequestHandler):
    def get(self):
        upload_url = blobstore.create_upload_url('/upload')
        self.response.out.write('<html><body>')
        self.response.out.write('<form action="%s" method="POST" enctype="multipart/form-data">' % upload_url)
        self.response.out.write("""Upload File: <input type="file" name="file"><br> <input type="submit" 
            name="submit" value="Submit"> </form></body></html>""")

class UploadHandler(blobstore_handlers.BlobstoreUploadHandler):
    def post(self):
        upload_files = self.get_uploads('file')  # 'file' is file upload field in the form
        blob_info = upload_files[0]
        self.redirect('/serve/%s' % blob_info.key())

class ServeHandler(blobstore_handlers.BlobstoreDownloadHandler):
    def get(self, resource):
        resource = str(urllib.unquote(resource))
        blob_info = blobstore.BlobInfo.get(resource)
        self.send_blob(blob_info)

app = webapp.WSGIApplication(
  [('/', MainHandler),
    ('/upload', UploadHandler),
    ('/serve/([^/]+)?', ServeHandler),
  ], debug=True)

if __name__ == '__main__':
    run_wsgi_app(app)

I was able to read files like .pdf,.txt, and media files from my blob store. But files like .doc,.docx returns files that are not readable. I have tried using blob_reader but still did not work, how do I get to read files like .doc and .docx?

Upvotes: 1

Views: 143

Answers (1)

voscausa
voscausa

Reputation: 11706

Your browser cannot handle doc files. But you can download the file and open the file with a viewer.

To download a blob, use:

self.send_blob(blob_info,save_as=True)

or:

self.send_blob(blob_info,save_as='amsdoc.docx')

Upvotes: 2

Related Questions