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应用程序引擎-用于非图像的Blobstore_Python_Google App Engine - Fatal编程技术网

Python应用程序引擎-用于非图像的Blobstore

Python应用程序引擎-用于非图像的Blobstore,python,google-app-engine,Python,Google App Engine,在我的Python Appengine“应用程序”中,我被要求“附加任何文件”,因此我有以下代码片段来“显示”这些文件 blobattach = '' blobmime = 'None' if pattachment.blobkey <> None: blobattach = get_serving_url(pattachment.blobkey) # <-- line 104 blob_info = blobstore.BlobInfo.get(pat

在我的Python Appengine“应用程序”中,我被要求“附加任何文件”,因此我有以下代码片段来“显示”这些文件

blobattach = ''
blobmime   = 'None'
if pattachment.blobkey <> None:
    blobattach = get_serving_url(pattachment.blobkey)  # <-- line 104
    blob_info  = blobstore.BlobInfo.get(pattachment.blobkey)
    blobmime   = blob_info.content_type[:5]
    blobname   = blob_info.filename
变换误差

所有的例子都使用图像,我对它们没有任何问题,实际上在开发过程中没有问题。有没有想过我会错过什么

非常感谢 大卫

正如我建议的那样,我将上述内容改为使用谷歌云存储。我仍然得到完全相同的错误。如果blob不是图像,则get_service_url函数将出错。对于不是图像的文件,是否有等效文件

上的示例提供了一个非常好的示例,说明了我正在尝试做的事情,只是我可能希望添加此人的简历而不是照片

谢谢
大卫解决了我的问题。我试图在一个“屏幕”上做太多

如果blob是一个图像,则如上所述获取服务url。
如果blob不是图像-显示指向不同页面的链接(target=''u blank'),该页面执行以下操作(几乎是从另一篇SO文章复制的):

如果rmntjobatach.mntjobatachid为0\
和rmntjobatch.blobkey:
blob_info=blobstore.BlobInfo.get(rmntjobattach.blobkey)
self.send\u blob(blob\u信息)
其他:
自我错误(404)
诀窍是当用户请求时,在同一页面上显示一个图像块,并在新页面上显示其他所有内容(单击链接)


David

当你说“这在开发中起作用”时,我想你的意思正好相反——它在部署到appspot时起作用,但在开发应用服务器中不起作用,例如“在你的笔记本电脑上”。我建议不要使用blobstore,而是使用更新的、闪亮的(在部署中,旧的blobstore API是在此基础上实现的——但是使用真正的GCS应该在部署和本地开发中都能很好地工作,在后一种情况下,GCS是在您自己的本地时间之上实现的)。感谢您的快速响应。我仍然看到您在Q中使用blobstore API——您的代码切换到了哪里。。。?
{% if blobmime == 'None' %}
{% else %}
    {% if blobmime == 'image' %}
        <img src="{{ blobattach }}" alt='Attachment'/>
    {% else %}
        <br/>
        <small><a class="fswideb" href="{{blobattach}}" Title="Download to view"><span>Download to view {{ blobname }}</span></a></small>
    {% endif %}
{% endif %}
File "/base/data/home/apps/s~fs-rentals/20140101.382312463312950329/fmntjobattachmaint.py", line 104, in display
blobattach = get_serving_url(pattachment.blobkey)
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/images/__init__.py", line 1794, in get_serving_url
return rpc.get_result()
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 613, in get_result
return self.__get_result_hook(self)
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/images/__init__.py", line 1892, in get_serving_url_hook
raise _ToImagesError(e, readable_blob_key)
    if rmntjobattach.mntjobattachid <> 0 \
    and rmntjobattach.blobkey:
        blob_info = blobstore.BlobInfo.get(rmntjobattach.blobkey)
        self.send_blob(blob_info)
    else:
        self.error(404)