我有一个服务器方法,可以通过API调用来获取图像文件的内容。
getImageApi: function (param1, param2, imageType) {
var url = http:/somehost/image?param1=' + param1 + '¶m2=' + param2 + '&imageType=' + imageType;
var response = Meteor.http.call('GET', url, {
headers: {"Content-Type": "image/jpeg"},
responseType: "buffer"
});
if (response.statusCode == 200) {
return new Uint8Array(pdfResponse.content);
}
else {
throw new Meteor.Error(pdfResponse.statusCode);
return "";
}
return "";
}
参数imageType可以包含jped,tiff,raw,png等值。
服务器端路由正在调用此方法并将内容写入窗口。
Router.route('/image', function () {
var param = queryParam;
var param1 = param.param1;
var imageType = param.imageType;
var param2 = param.param2;
var content="";
Meteor.call('getImageApi', param1, param2, imageType, function (error, result) {
if (error) {
console.log("Error occurred on receiving data");
content = "";
} else
content = new Buffer(result);
});
}
this.response.writeHeader('200', {
'Content-Type': 'image/jpeg',
});
this.response.write(content);
this.response.end();
}
}, {where: 'server'});
如果我在响应中将内容类型指定为“image / jpeg”,则会在窗口中显示损坏的图像。如果我没有指定任何内容类型,则无论api返回什么类型的图像,它都会下载.tiff文件。
我想知道我错过了什么。从服务器方法返回数据(转换为缓冲区和Uint8Array)时它是什么东西?或服务器路由上的内容(内容标题和其他标题参数)?