2016-05-12 51 views
1

我有一个在背景中使用Angular的cordova应用程序(cordova 5,ios 4)。 我需要显示一个图像(JPG),我通过https从远程服务器上下载。 但是,图像始终显示为由Web视图中断。 的图像被包括这样的:iOS上的Cordova显示破碎的图像

<img ng-src="{{picture}}"> 

我试图2点的变体,包括图片:

  • 经由HTTPS URL直接显示图像。我可以在桌面浏览器和iPhone Safari浏览器中打开网址,并正确显示它。在科尔多瓦,它显示为中断
  • 通过文件传输下载图像,然后通过file://链接包含本地图像。同样的问题。

我已经验证:

  • 图像本身是正确的,因为我可以证明它在浏览器中
  • 下载本身的工作原理,文件传输是正确的
  • 科尔多瓦已定允许所有的资源,所以它似乎没有白名单的问题
  • angulars消毒也已经过调整,所以在html中的链接实际上是正确的,即没有修改
  • 服务器发送了我通过wget验证的正确内容类型

我在这里没有什么想法了。

+0

在'ng-src'中验证文件名是否正确。在Cordova案件中,有时可能会出现问题。 – johnborges

+0

我直接从cordova获得文件名,以至于不能成为问题。在这两种情况下(文件名,HTTPS)的Safari网络检查员也告诉我加载图像时出现问题。遗憾的是没有进一步的信息 – Carsten

+0

你能发布确切的错误信息吗? – johnborges

回答

0

似乎iOS上Cordova的浏览器视图(UIWebview)比独立浏览器更加严格。我尝试通过wget下载图像,然后查看内容。它没有显示任何jpg标题,但是被unix文件命令识别为文本。
http头还没有显示Content-Length。


服务器侧逻辑(弹簧)返回的字节[],但我不包括任何变换到它。所以我通过在Web应用上的休息配置进行了更改,以包括一个ByteArrayHttpMessageConverter:

<mvc:annotation-driven> 
    <mvc:message-converters> 
     <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"> 
     </bean>   
     <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">    
     </bean> 
    </mvc:message-converters>  
</mvc:annotation-driven> 

然后它工作。浏览器似乎修复缺少的文件头和/或编码(不知道确切的错误是什么),而UIWebview不会这样做。