Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我怎样才能转换一张支票https://graph.microsoft.com/v1.0/me/photo/php对图像的$value响应_Php_Curl_Microsoft Graph Api_Impresspages - Fatal编程技术网

我怎样才能转换一张支票https://graph.microsoft.com/v1.0/me/photo/php对图像的$value响应

我怎样才能转换一张支票https://graph.microsoft.com/v1.0/me/photo/php对图像的$value响应,php,curl,microsoft-graph-api,impresspages,Php,Curl,Microsoft Graph Api,Impresspages,我试图在php网站上显示Microsoft Graph图像。我从graph收到图像,但格式不正确 结果是����JFIF``��C等等 问题是我收到的结果是一个图像,而不是json。但是我不能用上面的代码显示图像 > HTTP/1.1 200 OK Cache-Control: private Transfer-Encoding: chunked Content-Type: image/jpeg ETag: "BB3972DD" request-id: 1d3edddb-4278-43ac

我试图在php网站上显示Microsoft Graph图像。我从graph收到图像,但格式不正确

结果是����JFIF``��C等等

问题是我收到的结果是一个图像,而不是json。但是我不能用上面的代码显示图像

> HTTP/1.1 200 OK
Cache-Control: private
Transfer-Encoding: chunked
Content-Type: image/jpeg
ETag: "BB3972DD"
request-id: 1d3edddb-4278-43ac-be53-4a60861c7703
client-request-id: 1d3edddb-4278-43ac-be53-4a60861c7703
x-ms-ags-diagnostic: {"ServerInfo":{"DataCenter":"North Europe","Slice":"SliceA","Ring":"3","ScaleUnit":"002","Host":"AGSFE_IN_2","ADSiteName":"DUB"}}
Duration: 176.1934
Date: Wed, 28 Feb 2018 18:35:52 GMT
����JFIF``��C��C����"�� 
���}!1A
多亏了这个社区的帮助,我才得以解决我的问题。我的工作代码是:

$ch = curl_init();
    curl_setopt_array($ch, array(
        CURLOPT_URL => 'https://graph.microsoft.com/v1.0/me/photo/%24value',
        CURLOPT_HEADER => false,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => null,
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_HTTPHEADER => array(
            'authorization: Bearer '.ipDb()->selectValue('user','hash',array('id' => ipUser()->userId())),
            'content-type: image/jpeg; charset=utf-8'
        ) ,
    ));
    $response = curl_exec($ch);
    // Close the cURL resource, and free     system resources
    curl_close($ch);
    $returndata = 'photo <img src="data:image/jpeg;base64,' . base64_encode($response) . '"/>';
    return $returndata;
$ch=curl_init();
curl_setopt_数组($ch,数组(
CURLOPT_URL=>'https://graph.microsoft.com/v1.0/me/photo/%24value',
CURLOPT_头=>false,
CURLOPT_RETURNTRANSFER=>true,
CURLOPT_ENCODING=>null,
CURLOPT_MAXREDIRS=>10,
CULLOPT_超时=>30,
CURLOPT_HTTP_VERSION=>CURL_HTTP_VERSION_1_1,
CURLOPT_HTTPHEADER=>数组(
'authorization:Bearer'.ipDb()->selectValue('user','hash',array('id'=>ipUser()->userId()),
'内容类型:图像/jpeg;字符集=utf-8'
) ,
));
$response=curl\u exec($ch);
//关闭cURL资源,释放系统资源
卷曲关闭($ch);
$returndata='photo';
返回$returndata;

由于$value URL返回图像二进制文件,因此

    $returndata = 'photo <img src="data:image/jpeg;base64,' . base64_encode($res1['@odata.context']) . '"/>';
$returndata='photo';
不应使用
$res1['@odata.context']
,而应直接使用
$response


因此,
base64\u encode($response)
应该是img src标签的最后一部分。

可能重复感谢您的建议,但在发布问题之前,我已经尝试了有关该主题的信息。我用此信息更新了我的问题。您是否对
$
进行编码?此外,您需要将二进制图像转换为base64,然后才能将其作为数据url传递(它也是
jpg
而不是
gif
)。我测试了一些内容,并更新了我的问题。问题是我从端点接收到的不是json,而是jpeg。此API请求不返回json-它根据设计和HTTP内容类型头返回jpeg。看见因此,您的代码应该期望返回二进制数据,而不是JSON。谢谢!它起作用了。我还需要将CURLOPT_头设置为false。