Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 4, 2012 07:48:58

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Как показать svg файл

Проблема: вместо того чтобы отобразить файл странице броузер предлагает сохранить файл 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()



Офлайн

#2 Окт. 4, 2012 13:35:33

Solaris
От:
Зарегистрирован: 2011-06-02
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Как показать svg файл

может поможет
http://planetsvg.com/tools/mime.php



Офлайн

#3 Окт. 4, 2012 17:02:35

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

Как показать svg файл

а зачем svg выводить через embed?
я через img вывожу.
может я чего-то не так делаю?

Офлайн

#4 Окт. 4, 2012 20:55:42

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Как показать svg файл


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 будет просто статическая картинка.



Офлайн

#5 Окт. 4, 2012 22:54:18

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Как показать svg файл

Уважаемые если не трудно подскажите - мой код у вас показывает 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)



Офлайн

#6 Окт. 5, 2012 15:03:52

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Как показать svg файл

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



Офлайн

#7 Окт. 7, 2012 10:32:04

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Как показать svg файл

Спасибо всем за отзывы. Точно не знаю в чем было дело. Тестировал на Windows XP.
Починил тем что для HKEY_CLASSES_ROOT/.svg и .svgz" на сервера в реестре прописал ручками Content Type = image/svg+xml Сразу зараза не влияет, потребовалась перезагрузка.



Отредактировано doza_and (Окт. 7, 2012 10:34:49)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version