2011-10-14 96 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