Загрузите zip-архив из blobstore в Google AppEngine - PullRequest
1 голос
/ 20 марта 2012

Я работал на движке приложений Google с python.Я создал zip-архивы в хранилище блогов, но при попытке загрузить этот файл возникла проблема.

Я покажу некоторые детали: сначала я создал этот архив на блобе, а затем получил ключ этогозагруженный файл.Я хочу отправить этот ключ в URL на другую страницу Python, например:

print'<a href="download.py?key=%s">Save Zip</a>' % blob_key

Теперь на странице download.py я попытался получить ключ из URL как: self.request.get ('key'), но это не работает.

На этой странице я написал

class ServeHandler(blobstore_handlers.BlobstoreDownloadHandler):

...... и т. д.

Это единственный класс, который я использовалчтобы скачать zip, но проблема в том, что я не могу получить ключ, и когда я запускаю приложение, я получаю эту проблему:

****Status: 404 Not Found
Content-Type: text/html; charset=utf-8
Cache-Control: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Length: 0****

код app.yaml:

application: cloudcomputingproject20122012
version: 1
runtime: python
api_version: 1

handlers:
- url: /compress.py
  script: compress.py
- url: /decompress.py
  script: decompress.py
- url: (.*)/
  static_files: static\1/index.html
  upload: static/index.html

Теперь в compress.py я создал два класса: создал zip, сохранил его в хранилище больших двоичных объектов, получил ключ bob для этого сохраненного файла, затем определил ключ blob как глобальную переменную, теперь в классе обработчика обслуживания я пытаюсь загрузить этот zip, ноя не могу.

class ServeHandler(blobstore_handlers.BlobstoreDownloadHandler):
  def get(self):

    global x 
    #x="tvsD0KgYxX85hyC9wJHsqw=="
    print x
    x = str(urllib.unquote(x))
    blob_info = blobstore.BlobInfo.get(x)
    self.send_blob(blob_info,save_as=True)



def main():
    application = webapp.WSGIApplication( [('/serve', ServeHandler),], debug=True)
    c=zip()
    c.z()
    run_wsgi_app(application)

if __name__ == "__main__":
    main()

Ответы [ 2 ]

1 голос
/ 20 марта 2012

Python в App Engine не похож на PHP - URL-адреса запроса не отображаются напрямую в имена файлов;вы не можете указать на /download.php и ожидать, что запросы будут направлены вашему обработчику.Вам нужно сопоставить ваш обработчик с URL, а затем направить запросы на этот URL;см. любое из учебников по началу работы для примеров.

0 голосов
/ 20 марта 2012

Вы смотрели на пример здесь ? Кажется, вы делаете то же самое.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...