Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从Google AppEngine中的blobstore下载zip存档_Python_Google App Engine - Fatal编程技术网

Python 从Google AppEngine中的blobstore下载zip存档

Python 从Google AppEngine中的blobstore下载zip存档,python,google-app-engine,Python,Google App Engine,我用python开发了谷歌应用程序引擎。我在tho blobstore中创建了zip存档,但在尝试下载此文件时出现了问题 我将展示一些细节:首先,我在blob上创建了这个归档,然后我得到了这个上传文件的密钥。我想将此url中的键发送到另一个python页面,如下所示: print'<a href="download.py?key=%s">Save Zip</a>' % blob_key ……等等 这是我用来下载zip的唯一类,但问题是我无法获得密钥,当我运行应用程序时,

我用python开发了谷歌应用程序引擎。我在tho blobstore中创建了zip存档,但在尝试下载此文件时出现了问题

我将展示一些细节:首先,我在blob上创建了这个归档,然后我得到了这个上传文件的密钥。我想将此url中的键发送到另一个python页面,如下所示:

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

这是我用来下载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,将其存储在blobstore上,获取此存储文件的bob键,然后我将blob键定义为全局变量,现在在serve handler类中,我尝试下载此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()

你看过这个例子了吗?看来你也在做同样的事情

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)

你看过这个例子了吗?看来你也在做同样的事情

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)


应用程序引擎上的Python与PHP不同——请求URL不会直接映射到文件名;您不能指向
/download.php
,期望请求被路由到您的处理程序。您需要将处理程序映射到URL,然后将请求指向该URL;有关示例,请参阅任何入门教程。

应用程序引擎上的Python与PHP不同-请求URL不会直接映射到文件名;您不能指向
/download.php
,期望请求被路由到您的处理程序。您需要将处理程序映射到URL,然后将请求指向该URL;有关示例,请参阅任何入门教程。

您确实不想使用
print
语句生成HTML输出。不要这样做。花一点时间学习Python模板引擎。Django 1.2引擎包含在AppEngine SDK中。Jinja也包含在Python 2.7中。您真的,真的不想使用
print
语句生成HTML输出。不要这样做。花一点时间学习Python模板引擎。Django 1.2引擎包含在AppEngine SDK中。Jinja也包含在Python 2.7中。Sir.Stuart,是的,我在download.py页面中使用了这个类,但问题是我无法从我在该页面中创建zip存档的前一页面中获取密钥。Sir.Adam我正在使用eclipse for java developer,它支持HTML,但是a href中的操作是正确的,如下所示:问题是我无法从url获取此密钥,谢谢你的帮助,你知道吗?你是如何创建zip的?这个示例再次非常清楚地说明了如何重定向到downloadhandler以发送blob。如下所示:zip_file=files.blobstore.create(mime_type='application/zip'),它在存储上创建成功,但问题是我在页面中创建了zip并将此zip的密钥发送给(下载.py_页面,我在download.py.Thankszip_file=files.blobstore.create(mime_type='application/zip',blobinfo_uploaded_filename=text_content+'.zip')和files.open(zip_文件,'a')作为f:f.write(zipstream.getvalue())文件打开(zip_文件)blob_key=files.blobstore.get_-blob_-key(zip文件)#print blob_key blob_info=blobstore.BlobInfo.get(blob_key)打印“”%blob_keySir.Stuart,是的,我在download.py页面中使用了这个类,但问题是我无法从我在该页面中创建zip存档的上一个页面中获取密钥。Sir.Adam我正在使用eclipse for java developer,它支持HTML,但是a href中的操作是正确的,例如:问题我无法从url,谢谢你的帮助,你有什么想法吗?你是如何创建zip的?这个示例再次非常清楚地说明了如何重定向到downloadhandler以发送blob。如下所示:zip\u file=files.blobstore.create(mime\u type='application/zip'),它在存储上创建成功,但问题是我在页面中创建了zip,并将此zip的密钥发送到(download.py_页面,在download.py.Thankszip_file=files.blobstore.create(mime_type='application/zip',blobinfo_上传的文件名=text_content+'.zip')和文件一起打开(zip文件,'a'))作为f:f.write(zipstream.getvalue())files.finalize(zip_文件)blob_key=files.blobstore.get_blob_key(zip_文件)#print blob_key blob_info=blobstore.BlobInfo.get(blob_key)print“”%blob_key,我从您的评论中了解到我不能传递任何参数(作为代码中的key)从一个python页面到另一个python页面?但是我能为这个问题做些什么呢?因为在第一个页面中,我在blobstore上创建了zip,并将此zip的密钥发送到另一个python页面中。@Eng_Engineer您可以很好地传递查询字符串参数-同样,请查看任何入门指南中的示例。在执行任何操作之前,您必须先取消了解在应用程序引擎中编写应用程序的基本知识,包括将URL映射到处理程序。注意:我在应用程序引擎中的blobstore中编写了zip存档文件,它工作正常,如本指南所述,但问题恰恰是在我下载或获取此blob(zip)时出现的从存储中。@Eng_工程师正如我所说,您遇到的问题并不特定于此任务-您只需要学习如何将URL映射到处理程序。事实上,如果您已经编写了其他可以工作的处理程序,您应该能够看到这一点-您需要将处理程序添加到应用程序定义中,而不是尝试引用Python模块direc@Eng_Engineer您需要在app.yaml中定义一个处理程序,它指向一个包含WSGI应用程序的模块。同样,这不是您的问题所特有的,每个入门指南都会涉及到这一点。从其中一个开始,我从您的评论中了解到,我不能传递任何参数(作为我代码中的键)从一个python页面到另一个python页面?但是我能为这个问题做些什么呢?因为在第一个页面中,我在blobstore上创建了zip,并将这个zip的密钥发送到另一个python页面中。@Engineer您可以很好地传递查询字符串参数-再次,检查任何