Найти - Пользователи
Полная версия: Как показать svg файл
Начало » Pyramid / Pylons / TurboGears » Как показать svg файл
1
doza_and
Проблема: вместо того чтобы отобразить файл странице броузер предлагает сохранить файл svg.
Аналогичный код в html работает нормально.

Полностью идентичный код для обычной картинки работает без проблем.

одинаково работает fierfox, chrom 11

Как это преодолеть?

from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response
def hello_world(request):
    return Response("""
<html>
<body>
<h1>SVG</h1>
<img src="http://localhost:6543/static/a.png" alt="sxem not found">
<embed src="http://localhost:6543/static/a.svg" type="image/svg+xml" />
</body>
</html>
""")
#<img src="static/a.png" alt="sxem not found">
#<embed src="static/a.svg" type="image/svg+xml" />
if __name__ == '__main__':
    config = Configurator()
    config.add_route('hello', '/')
    config.add_view(hello_world, route_name='hello')
    config.add_static_view('static', 'static', cache_max_age=3600)
    app = config.make_wsgi_app()
    server = make_server('0.0.0.0', 6543, app)
    server.serve_forever()
Solaris
может поможет
http://planetsvg.com/tools/mime.php
ilnur
а зачем svg выводить через embed?
я через img вывожу.
может я чего-то не так делаю?
doza_and

ilnur
а зачем svg выводить через embed
Я так вычитал http://www.w3schools.com/svg/svg_inhtml.asp
т.е. написано что допустимо не img а embed,object,iframe, inline, href

но img у меня тоже не работает. Хочу понять вообще куда рыть. Настройки сервера? может content_type неправильно установлен?

ilnur
может я чего-то не так делаю?
Это зависит от цели. Если использовать embed, то можно из html управлять содержимым svg т.е. из javascript подергать и поперекрашивать объекты внутри картинки (естественно на стороне клиента). А с img будет просто статическая картинка.
doza_and
Уважаемые если не трудно подскажите - мой код у вас показывает svg или нет?

Попробовал тоже самое на bottle - идентичное поведение - как картинку не показывает в случае embed пытается сохранить файл.

from bottle import route, run, template
@route('/static/<filename:re:.*\.png>#')
def send_image_png(filename):
    return static_file(filename, root='/static') #, mimetype='image/png'
@route('/static/<filename:re:.*\.svg>#')
def send_image_svg(filename):
    return static_file(filename, root='/static',mimetype='image/svg+xml')
    
@route('/')
def index(name='World'):
    return template("""
<html>
<body>
<h1>SVG</h1>
<img src="http://localhost:6543/static/a.png" alt="sxem not found">
<embed src="http://localhost:6543/static/a.svg" type="image/svg+xml" />
</body>
</html>
""", name=name)
run(host='localhost', port=6543)
Андрей Светлов

Да, у меня пример для пирамиды работает. bottle не проверял.

doza_and
Спасибо всем за отзывы. Точно не знаю в чем было дело. Тестировал на Windows XP.
Починил тем что для HKEY_CLASSES_ROOT/.svg и .svgz" на сервера в реестре прописал ручками Content Type = image/svg+xml Сразу зараза не влияет, потребовалась перезагрузка.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB