2011-10-14 13 views
10

ho un SharePoint pagina web che fa riferimento a un file SVG memorizzato nella RootFolder di un elenco SharePoint all'interno del tag img:Chrome non sta caricando SVG File come immagine/svg + xml

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

L'immagine viene renderizzata correttamente in IE9 sul desktop e sui dispositivi iOS (Safari). Tuttavia, in Chrome su Windows (sto usando v14 al momento) non riesce a visualizzare. Rende invece l'icona dell'immagine spezzata.

La scheda di rete in Chrome rivela che il file 1.svg è scaricato come applicazione/octet-stream (e quindi il rendering errato). Cosa devo cambiare in modo che Chrome riconosca correttamente il tipo MIME (come specificato nel tag)? Potrebbe essere un bug in Chrome (come suggerito in this SO answer)? In tal caso, c'è un work-around per caricare il file SVG in un altro modo (ad esempio, tag embed forse)?

Nota che il debugger di IE (F12) identifica correttamente il tipo come image/svg + xml e quindi esegue il rendering dell'immagine come previsto.

Edit: Dal momento che sembra essere un problema sul lato server (grazie @robertc) ho aggiunto il fatto che il file è servita da SharePoint, sospettando che SharePoint potrebbe non riconoscere il tipo MIME.

+0

Quale server Web stai utilizzando? – robertc

+0

IIS 7 su Windows 7 per ora (anche se verrà distribuito a WS 2008 R2). Ho aggiunto il tipo MIMI a IIS che ha corretto il riconoscimento del flusso in IE 9 e iOS. –

risposta

9

Non c'è alcun attributo type sull'elemento img, è necessario impostare il tipo MIME correttamente sul server. Penso che funzioni solo in IE perché sta facendo sniffare i contenuti.

Su IIS7 e soprattutto è possibile specificare il tipo MIME mapping nel file web.config nella sezione system.webServer:

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

Dopo di che dovrebbe funzionare in tutti i browser, ma potrebbe essere necessario fare un aggiornamento forza (Ctrl + F5) per convincerli a richiedere nuovamente il file.

+0

Ricevo un errore (Errore HTTP 500.19) quando aggiungo questa linea al web.config perché il tipo è già definito nelle impostazioni del tipo MIME di IIS. Funziona anche correttamente su iPad (browser non IE). –

+0

@PhilippSchmid Lo rimuoverò a livello di server, in questo modo non dovrai ricordarti di continuare a farlo durante la distribuzione. – robertc

+0

@PhilippSchmid [Ecco una pagina di esempio] (http://www.boogdesign.com/examples/svg/svg-as-image-testcase.html), se le immagini vengono caricate correttamente su quella quindi puoi essere sicuro che è il tuo la configurazione del server e non il browser è il problema. – robertc

Problemi correlati