有一个奇怪的问题。我正在使用facebook's / me graph api提供的URL和一个简单的$ http.get(...)调用从facebook API下载用户Pic。这是在AngularJS应用程序(AngularJS的v1.4.4)中的客户端执行
Facebook.api("/v2.3/me",{fields: 'id,name,first_name,picture.width(160).height(160)'},
function (response) {
$scope.$apply(function() {
console.log(response.picture.data.url);
$scope.fbuser.picture = response.picture.data.url;
$http.get($scope.fbuser.picture)
.success(function (picdata, status, headers, config) {
console.log("retrieved "+picdata.length+" bytes");
..etc..
$ http.get(...)返回一个比服务器说的短的picdata字符串。为了排除Facebookesque之类的东西,我改变了在我的服务器上使用一个文件...并用相同的图片看到相同的结果。根据我在浏览器中看到的标题,图像的长度应为5886字节...
接受-范围:字节
缓存控制:max-age = 84600,public,no-transform
内容长度:5886
内容类型:图像/ JPEG
日期:2015年9月27日星期日04:06:10 GMT
ETag的: “c01bf-16fe-520b2957e00e9”
到期日:2015年9月28日星期一03:36:10 GMT
最后修改日期:2015年9月27日星期日03:57:47 GMT
服务器:Apache / 2.2.22(Debian)
然而,当我记录picdata.length时,我得到5727字节
如果我遍历picdata字符串,我发现一些 picdata.charCodeAt(i)字符的值为> 255 ...这会让我相信这个字符串不是一个简单的ASCII字符串......但是$ http.get不应该只返回一个字节数组吗?
我知道检索到的URI是正确的 - 如果我在浏览器中使用URI,浏览器可以正常加载图片。
如果我尝试使用从URI获得的数据构建图像(构建blob并将其用作图像),我会得到一个损坏的图像。
我从Facebook 和本地文件中看到这一点的事实表明我在这里错过了一些东西....