I’ve been working on a simple App Engine application that offers upload and
download functionality to and from Google Cloud Storage. When it came time to
actually download the content I needed to write a webapp2
will retrieve the file from Cloud Storage and return it to the client.
The trick to this is to set the proper content type in your response header. In the example below I used the Cloud Storage Client Library to open and read the file, then set the response appropriately.
import webapp2 import cloudstorage class FileDownloadHandler(webapp2.RequestHandler): def get(self, filename): self.response.headers['Content-Type'] = 'application/x-gzip' self.response.headers['Content-Disposition'] = 'attachment; filename=%s' % filename filename = '/bucket/' + filename gcs_file = cloudstorage.open(filename) data = gcs_file.read() gcs_file.close() self.response.write(data)