2012-12-19 14 views
0

我正在使用此Facebook服務返回個人資料照片。有沒有一種方法來檢測從重定向的img src中加載​​的圖像類型?

<img src="http://graph.facebook.com/username/picture">

如果FB用戶沒有設置個人資料圖片,服務重定向到這個Facebook的匿名人士形象:http://static.ak.fbcdn.net/rsrc.php/v2/yo/r/UlIqmHJn-SK.gif。我想避免提出這些。

有沒有一種方法,使用JavaScript,檢測返回的圖像是否爲http://static.ak.fbcdn.net/rsrc.php/v2/yo/r/UlIqmHJn-SK.gif。該地址來自CDN,所以我不知道我們能否檢查文件大小是< = 390B,而mime-type是image/gif?

編輯:不幸的是,只涉及現代瀏覽器(HTML5和畫布)的解決方案可能不適用於我,因爲要求是我們仍然需要支持回到ie7。

+0

你能給一個指向用戶圖片的URL的例子嗎? –

+0

我把 http://stackoverflow.com/questions/934012/get-image-data-in-javascript 和 http://websemantics.co.uk/online_tools/image_to_data_uri_convertor/ 又上來與 http://jsfiddle.net/mplungjan/NRsh4/ 但它不處理gif :(((( – mplungjan

回答

1

是的,您可以簡單地使用AJAX發出請求並自己解析MIME類型。事實上,Facebook的包括這個頭:

 
Access-Control-Allow-Origin: * 

此授權CORS(跨源資源共享),這是現在大多數瀏覽器都支持。

如果你絕對必須支持舊的瀏覽器,看看打開圖形文件:

https://developers.facebook.com/docs/reference/api/using-pictures/

而不是直接讀取圖片,你可以獲取與JSONP的元數據。這應該在IE7中工作:

 
function checkPictureUrl(userName, cb) { 
    $.ajax({ 
    url: 'http://graph.facebook.com/' + userName + '/picture?redirect=false', 
    dataType: 'jsonp', 
    success: function (json) { 
     // user only has a default profile picture 
     if(json.data.is_silhouette) 
     return cb(null); 
     else 
     return cb(null, json.data.url); 
    }, 
    error: function (err) { 
     cb(err); 
    } 
    }); 
} 
相關問題