BLOB-объектов в BlobStore в GAE - PullRequest
2 голосов
/ 31 марта 2012

Я создал BLOB-объекты в GAE BlobStore, и эти файлы были созданы успешно, проблема в том, что когда я пытаюсь обработать эти файлы с помощью BlobKey, я получаю content-length = 0, как это:

Status: 200 OK
Cache-Control: no-cache
X-AppEngine-BlobKey: crXwVb6vKoS8OykvgPmSew==
Content-Type: application/zip
Content-Disposition: attachment; filename="test.zip"
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Length: 0

такой, что (test.zip) - это файл, созданный в BlobStore, я проверил BlobStore в консоли администратора, и этот файл успешно создан. РЕДАКТИРОВАТЬ: код download.py:

def mime_type(filename):
    return guess_type(filename)[0]
class ServeHandler(blobstore_handlers.BlobstoreDownloadHandler):
    def get(self):

        blob_key = self.request.get('key')
        blob_key = str(urllib.unquote(blob_key))
        blob_info = blobstore.BlobInfo.get(blob_key)
        content_type1 =mime_type(blob_info.filename)
        save_as1 =  blob_info.filename
        self.send_blob(blob_key,content_type=content_type1,save_as=save_as1)



def main():

    application = webapp.WSGIApplication([
            (r'/download.*', ServeHandler),
        ], debug=True)
    run_wsgi_app(application)



if __name__ == '__main__':
    main()

ключ существует в URL как:

http://localhost:8080/download.py?key=Es9f00P29wNTZoeL9ccS4g==

и я возьму его, чтобы получить блоб из магазина.

Заранее спасибо.

1 Ответ

0 голосов
/ 15 июня 2012

В зависимости от строки документа:

Args:
  blob_key_or_info: BlobKey or BlobInfo record to serve.
  content_type: Content-type to override when known.
  save_as: If True, and BlobInfo record is provided, use BlobInfos
    filename to save-as.  If string is provided, use string as filename.
    If None or False, do not send as attachment.
  start: Start index of content-range to send.
  end: End index of content-range to send.  End index is inclusive.
  use_range: Use provided content range from requests Range header.
    Mutually exclusive to start and end.

Попробуйте изменить код на

class ServeHandler(blobstore_handlers.BlobstoreDownloadHandler):
  def get(self):
    blob_key = BlobKey(urllib.unquote(self.request.get('key')))
    self.send_blob(blob_key, save_as=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...