我使用python在Google应用引擎上工作。我创建了zip存档到blobstore,但是当我尝试下载这个文件时出现问题。
我将展示一些细节:首先,我在blob上创建了这个存档,然后我得到了这个上传文件的密钥。我想将这个键在url中发送到另一个这样的python页面:
print'<a href="download.py?key=%s">Save Zip</a>' % blob_key
现在在download.py页面中,我试图从网址获取密钥: 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,将其存储在blobstore上,获取此存储文件的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()
答案 0 :(得分:1)
App Engine上的Python与PHP不同 - 请求URL不直接映射到文件名;您不能指向/download.php
并期望将请求路由到您的处理程序。您需要将处理程序映射到URL,然后在该URL处指向请求;有关示例,请参阅任何入门教程。
答案 1 :(得分:0)
您是否看过示例here?看起来你做的完全一样。
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)