2011-10-14 20 views
10

mam SharePoint strona internetowa, która odwołuje się do pliku SVG przechowywane w RootFolder listy SharePoint wewnątrz znacznika IMG:Chrome nie ładuje SVG, jak plik image/svg + xml

<img src='http://localhost/Lists/MyList/1/1.svg' type='image/svg+xml' /> 

Obraz jest renderowany poprawnie w IE9 na komputerze, a także na urządzeniach z systemem iOS (Safari). Jednak w Chrome na Windowsie (w tej chwili używam wersji v14), nie wyświetla się. Zamiast tego wyświetla ikonę zepsutego obrazu.

Zakładka sieciowa w Chrome pokazuje, że plik 1.svg jest pobrany jako aplikacja/strumień oktetowy (i stąd nieprawidłowe renderowanie). Co muszę zmienić, aby Chrome prawidłowo rozpoznał typ MIME (jak określono w tagu)? Czy może to być błąd w Chrome (jak zasugerowano w this SO answer)? Jeśli tak, czy jest jakieś obejście, aby załadować plik SVG w inny sposób (np. Może być tag embed)?

Należy zauważyć, że debugger IE (F12) poprawnie identyfikuje typ jako image/svg + xml i dlatego renderuje obraz zgodnie z oczekiwaniami.

Edit: Ponieważ wydaje się być problem po stronie serwera (dzięki @robertc) Dodałem fakt, że plik jest obsługiwana przez SharePoint, SharePoint może podejrzewać, że nie rozpoznaje typu MIME.

+0

Jakiego serwera internetowego używasz? – robertc

+0

Usługi IIS 7 w systemie Windows 7 na razie (chociaż ostatecznie zostaną wdrożone w WS 2008 R2). Dodałem typ MIMI do IIS, który naprawił rozpoznawanie strumienia w IE 9 i iOS. –

Odpowiedz

9

Nie ma atrybutu type na elemencie img, należy poprawnie ustawić typ MIME na serwerze. Wydaje mi się, że działa tylko w IE, ponieważ robi treść węsząc.

Na IIS7 i powyżej można określić odwzorowania typu MIME w pliku web.config w sekcji system.webServer:

<staticContent> 
    <mimeMap fileExtension=".svg" mimeType="image/svg+xml"/> 
</staticContent> 

Po tym powinno działać we wszystkich przeglądarkach, ale być może trzeba będzie zrobić odświeżenia siły (Ctrl + F5), aby ponownie poprosić o plik.

+0

Po dodaniu tej linii do pliku web.config pojawia się błąd (błąd HTTP 500.19), ponieważ typ jest już zdefiniowany w ustawieniach typu MIME w IIS. Działa również poprawnie na iPadzie (przeglądarka inna niż IE). –

+0

@PhilippSchmid Chciałbym usunąć go na poziomie serwera, w ten sposób nie będziesz musiał pamiętać, aby nadal robić to po wdrożeniu. – robertc

+0

@PhilippSchmid [Oto przykładowa strona] (http://www.boogdesign.com/examples/svg/svg-as-image-testcase.html), jeśli obrazy są ładowane poprawnie, możesz mieć pewność, że to Twoja konfiguracja serwera, a nie przeglądarka, która jest problemem. – robertc

Powiązane problemy