コード例 #1
0
ファイル: media.py プロジェクト: openfire/openfire_old
    def get(self, action, asset_key, filename=''):

        asset_key = ndb.Key(urlsafe=asset_key)
        asset = asset_key.get()
        if not asset:
            return self.error(404)
        if not asset.blob:
            return self.error(404)

        blob_info = blobstore.get(asset.blob)
        if not blob_info:
            return self.error(404)

        value = BlobReader(blob_info.key(), buffer_size=blob_info.size).read()

        # The code works with or without the following line.
        #value = unicode(value.decode('utf8')).encode('utf8')[0:-2]
        value = base64.b64decode(value.split('base64,')[1])

        self.response.body = value

        self.response.headers['Content-Type'] = str(blob_info.content_type)
        if action == 'get':
            self.response.headers['Content-Disposition'] = str('attachment; filename=' + blob_info.filename)

        return self.response