2011-10-14 141 views
10

我有一個的SharePoint網頁引用存儲在SharePoint列表的img標籤內的RootFolder一個SVG文件:瀏覽器無法加載SVG文件作爲圖像/ SVG + XML

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

圖像在桌面以及iOS設備(Safari)上的IE9中正確呈現。但是,在Windows上的Chrome(我目前正在使用v14)無法顯示。它反而呈現破碎的圖像圖標。

Chrome中的網絡選項卡顯示文件1.svg爲​​,作爲application/octet-stream下載(因此呈現不正確)。我需要更改什麼,以便Chrome能夠正確識別MIME類型(如標籤中指定的)?它可能是Chrome中的錯誤(如this SO answer中所建議的)?如果是這樣,是否有解決方法以另一種方式加載SVG文件(例如,可能是嵌入標籤)?

請注意,IE的調試器(F12)正確識別類型爲image/svg + xml,因此呈現預期的圖像。

編輯:由於它似乎是一個服務器端問題(謝謝@robertc)我已經添加了文件由SharePoint提供的事實,懷疑SharePoint可能無法識別MIME類型。

+0

您使用什麼網絡服務器? – robertc

+0

現在Windows 7上的IIS 7(儘管它最終將部署到WS 2008 R2)。我已經將MIMI類型添加到IIS中,它修復了IE 9和iOS中的流識別問題。 –

回答

9

img元素上沒有屬性type,需要在服務器上正確設置MIME類型。我認爲它只適用於IE,因爲它正在進行內容嗅探。

在IIS7及以上的,你可以指定web.config文件的MIME類型映射在system.webServer部分:

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

,它應該在所有的瀏覽器,但你可能需要做一個力量刷新後(按Ctrl + F5)讓他們再次請求文件。

+0

當我將此行添加到web.config時,出現錯誤(HTTP錯誤500.19),因爲該類型已在IIS的MIME類型設置中定義。它也可以在iPad(非IE瀏覽器)上正常工作。 –

+0

@PhilippSchmid我會在服務器級別刪除它,這樣您在部署時就不必記住繼續這樣做。 – robertc

+0

@PhilippSchmid [這是一個示例頁面](http://www.boogdesign.com/examples/svg/svg-as-image-testcase.html),如果圖像加載正確,那麼你可以肯定它是你的服務器配置,而不是瀏覽器,這是問題。 – robertc