Форум сайта python.su
Проблема: вместо того чтобы отобразить файл странице броузер предлагает сохранить файл 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()
Офлайн
может поможет
http://planetsvg.com/tools/mime.php
Офлайн
а зачем svg выводить через embed?
я через img вывожу.
может я чего-то не так делаю?
Офлайн
ilnurЯ так вычитал http://www.w3schools.com/svg/svg_inhtml.asp
а зачем svg выводить через embed
ilnurЭто зависит от цели. Если использовать embed, то можно из html управлять содержимым svg т.е. из javascript подергать и поперекрашивать объекты внутри картинки (естественно на стороне клиента). А с img будет просто статическая картинка.
может я чего-то не так делаю?
Офлайн
Уважаемые если не трудно подскажите - мой код у вас показывает 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 не проверял.
Офлайн
Спасибо всем за отзывы. Точно не знаю в чем было дело. Тестировал на Windows XP.
Починил тем что для HKEY_CLASSES_ROOT/.svg и .svgz" на сервера в реестре прописал ручками Content Type = image/svg+xml Сразу зараза не влияет, потребовалась перезагрузка.
Отредактировано doza_and (Окт. 7, 2012 10:34:49)
Офлайн