簡體   English   中英

Web服務來源的圖像顯示為? 在特定版本的Android瀏覽器中

[英]Webservice sourced images show as ? in certain versions of stock Android Browser

我試圖使用頁面綁定數據時呈現到路徑中的ID動態地獲取圖像。 但是,圖像在方框[?]中顯示為藍色問號。 圖像可以在iOS,Mobile Chrome,較舊版本的Android瀏覽器(2.3),較新版本的Android瀏覽器(4.2.2)和台式機上的IE / Firefox / Chrome上正常加載。 僅到目前為止,此問題僅在Android 4.0和4.1上出現。

這就是我試圖加載圖像的方式:

例如 <img src="../services/getImage?id=f6c799b2-ff31-4fbc-abc9-31f20d5e69c8">

此請求命中如下所示的.NET Web服務(IHttpAsyncHandler實現)

  public virtual UploadedImage getImage(Guid imageId) { string eTag; Entities.Image.DTO image = null; if ( image = //get image entity ) { eTag = Delta.Crypto.CreateMD5Hash(image.ModifiedDate.ToEpoch().ToString()); if (Request.Headers[HTTPRequestHeaderKeys.IfNoneMatch].IsNotNullOrEmpty() && Request.Headers[HTTPRequestHeaderKeys.IfNoneMatch] == eTag) { this.RespondWithNoUpdate(); return null; } if (image.ImageUrl.IsNullOrEmpty() || image.ImageContent == null || image.ImageContent.Length == 0) { this.RespondWithNotFound(); return null; } Response.AddHeader(HTTPResponseHeaderKeys.ETag, eTag); return new UploadedImage() { contentType = "image/" + System.IO.Path.GetExtension(image.ImageUrl).ToLower().Substring(1), fileContents = image.ImageContent, fileName = image.ImageUrl }; } return null; 

因此,我們使用文件擴展名設置了mime類型,這可能不是100%可靠的,但是我已經確認在這種情況下是正確的。

這是我的台式機Chrome瀏覽器上的請求和成功響應的副本請求: Accept:image/webp,*/*;q=0.8 Accept-Encoding:gzip,deflate,sdch Accept-Language:en-US,en;q=0.8,es;q=0.6 Connection:keep-alive Host:localhost Referer:http://localhost/delta/events/bigevent/app/event.html User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36

響應:

Cache-Control:no-cache Content-Disposition:inline; filename="2dab739b-a06c-4579-8555-0598d738f858_eventApplayoutContainerEventApplicationlandingScreenImageContainer_background-image.png" Content-Length:236 Content-Type:image/png Date:Tue, 11 Feb 2014 19:53:31 GMT ETag:1c79507d4969ea7534f3068ca1e60be4 Expires:-1 Pragma:no-cache

我唯一的猜測是,當以這種方式請求圖像時,img控件在渲染時不知道mime類型,因此在抱怨。

注意:直接訪問(在單獨的選項卡中)時,請求確實在Android瀏覽器上成功。

有誰知道導致[?]和潛在解決方案的原因? 我沒有找到太多,如果有任何文檔在股票瀏覽器上。 如果您有一些文檔的鏈接,也將不勝感激。 謝謝!

編輯:我應該注意具有相對路徑的資源圖像正在加載好

Ex. <img src="../images/EmptyProfile.png">

我實際上能夠弄清楚這一點。

問題的根源在於,這些版本的Android瀏覽器隨請求一起發送Accept標頭。

我的Web服務嘗試根據客戶端首選項來協商內容交付類型。 沒有默認值。

希望這對以后的人有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM