【发布时间】:2013-12-29 11:48:28
【问题描述】:
我有一个 python GAE 应用程序,带有一个 ndb 数据存储区,将图像存储为 blob 属性。
我使用get_serving_url() 函数提供图像,它在 Google App Engine 生产服务器 ("my-app".appspot.com) 上正常工作。
当我在 localhost 上尝试时,URL 似乎生成正确,但如果我点击它,我会收到一个空白页面。
是否正常,因为GAE没有在localhost上实现,还是我开发环境的问题?无论如何:有没有办法让它在本地主机上工作?我在网上没有找到任何信息。
谢谢。
更新
一些额外的细节:所有上传过程都正常工作,我在 blobstore 查看器中看到上传的图像,它的 url 类似于localhost:8000/*blob-key*?display=inline。
当我在 localhost 上调用 get_serving_url() 时,我获得了一个类似 localhost:8080/_ah/img/*blob-key* 的 URL,但它不起作用(空白页)。我刚刚发现在日志控制台上我收到了这条消息:
ERROR 2013-12-30 11:52:14,299 module.py:665] 对“/_ah/img/vMDNz9x9ak9VcjBXmfMBcg==”的请求失败
Traceback(最近一次调用最后一次): _handle_request 中的文件“C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\module.py”,第 661 行 return handler.handle(match, environ, Wrapped_start_response) 文件“C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\wsgi_handler.py”,第 59 行,在句柄中 返回self._wsgi_app(环境,start_response) 调用中的文件“C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\blob_image.py”,第 195 行 返回 self.serve_image(环境,start_response) 文件“C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\blob_image.py”,第 184 行,在 serve_image 图像,mime_type = self._transform_image(blobkey,选项) _transform_image 中的文件“C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\blob_image.py”,第 68 行 image = _get_images_stub()._OpenImageData(image_data)
AttributeError:“ImagesNotImplementedServiceStub”对象没有属性“_OpenImageData”
无论如何,当我在生产服务器上部署时,get_serving_url() 会生成类似lh6.ggpht.com/*longer-blob-key* 的东西,指向 Google 服务器并正常工作。
【问题讨论】:
-
应该可以正常工作。在此处查看样板示例:github.com/jimmykane/gae-image-upload-example
-
我建议你使用 blobstore 来上传和存储图片,因为 getServingUrl() 需要你上传到 blobstore 时返回的 blobkey。上传到 blobstore 后,您的问题将得到解决。
-
样板示例类似于我的代码。我在我的电脑上尝试并得到了相同的结果:blob 上传正确,(我在 SDK 控制台上看到它)但服务 url 指向一个空白页面。
标签: google-app-engine localhost blob