В моем Python Appengine «приложение» Я попросил, чтобы «прикрепить любой файл», таким образом у меня есть следующий фрагмент кода, чтобы «Дисплей» эти файлы ...Python App Engine - Blobstore для не-изображений
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
Используя следующий HTML
{% 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 %}
Если вложение является изображением, оно отображается (blobmime == 'изображение'). Если нет, отображается ссылка, поэтому пользователь может загрузить файл и просмотреть его, но они могут.
Однако, хотя это работает в разработке, на моем ноутбуке (Google App Engine Launcher), я получаю следующую ошибку при попытке «обслуживать» файл .xls. (Нет ошибок с вложениями .jpg)
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)
TransformationError
Все примеры использования изображений и у меня нет никаких проблем с ними, действительно нет проблем в развитии. Любые мысли о том, что я мог пропустить?
Большое спасибо Дэвид
Как предположил я изменил выше, чтобы использовать Google Cloud Storage. Я все равно получаю точно такую же ошибку. Ошибки функции get_serving_url, если капля не является изображением. Есть ли эквивалент файла, который не является изображением?
Образец в https://cloud.google.com/appengine/docs/python/tools/webapp/blobstorehandlers#BlobstoreUploadHandler представляет собой действительно хороший пример того, что я пытаюсь сделать, за исключением того, что я могу добавить резюме пользователя вместо своей фотографии.
Благодаря Дэвид
когда вы говорите «это работает в развитии» Я думаю, что вы имеете в виду обратное - что он работает при развертывании в appspot, но ** не ** на сервере приложений разработки, например, «на вашем ноутбуке». Я бы рекомендовал избегать blobstore и использовать более новый, блестящий https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/ вместо него (при развертывании вместо этого реализован старый API-интерфейс blobstore, но с реальным GCS должен отлично работать как при развертывании, так и в локальном развитии, в последнем случае GCS реализуется поверх ваших собственных местных времен). –
Я посмотрю и дам вам знать. Спасибо за быстрый ответ. –
Я все еще вижу, что вы используете API blobstore в своем Q - где ваш код перешел на https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/ ...? –