我试图让使用Redux的可观测图像。如何使用redux-observable正确地获取二进制映像?
基于Microsoft Graph API,它返回所请求的照片的二进制数据。
我成功得到利用邮差图像(它显示的结果,因为它是二进制图像)。
然而,当我尝试使用redux-observable,响应我总是null
,并的responseType总是json
不管我给了Content-Type的像image/jpeg
,text/plain
,application/json
。
export const getAvatarEpic = (action$, store) =>
action$
.ofType(GET_AVATAR)
.mergeMap(action =>
ajax
.get(
'https://graph.microsoft.com/v1.0/me/photo/$value',
{
// 'Content-Type': 'image/jpeg',
'Authorization': 'Bearer ' + myToken
}
)
.do(res => console.log(res)) // <- the result
.map(getAvatarSucceed)
.catch(getAvatarFailed)
);
这是我得到的。也许我应该使用别的东西而不是ajax.get
?
{
"originalEvent": {
"isTrusted": true
},
"xhr": {},
"request": {
"async": true,
"crossDomain": false,
"withCredentials": false,
"headers": {
"Authorization": "Bearer hereIsMyToken",
"X-Requested-With": "XMLHttpRequest"
},
"method": "GET",
"responseType": "json",
"timeout": 0,
"url": "https://graph.microsoft.com/v1.0/me/photo/$value"
},
"status": 200,
"responseType": "json",
"response": null
}
你需要提供一个接受头瓦特/二进制文件图像MIME类型?例如为什么json是响应类型? – Tim
@蒂姆是的,这是一个很好的观点。基于[api](https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/profilephoto_get),我只需要提供'Authorization'。但是我实际上尝试为** Content-Type **添加'image/jpeg','text/plain','application/json',但** responseType **总是'json'。 –
我相信这里的'Content-Type'只会影响请求,而不会影响响应。您应该在响应正文中获取图像的base64编码版本。你可以添加响应身体吗? –