我尝试使用Postman处理API。在Postman中,图像显示正常。我正在使用Postman生成以下代码
$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.com/v2/tier1/XXXXX/photos/photo/MYPHOTOIDISHERE/download?api_key=MYAPIKEYISHERE",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache",
"postman-token: 74f19da6-d4ba-fe02-4ad3-2a313b472ca2"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
我对Postman代码所做的唯一修改是CURLOPT_SSL_VERIFYPEER
,因为我收到错误。
图像在Postman中完美显示但是当我尝试自己使用代码时,我得到一个看起来像UTF的长字符串。这个小样本(很长)如下;
����JFIF``��C #!!!$'$ & ! ��C ����"�� ���}!1AQa"q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������� ���w!1AQaq"2�B���� #3R�br� $4�
如何将其转换为图像?
答案 0 :(得分:2)
您看到的结果是图像的实际字节数。
您需要将其保存到文件或将其作为图像字节处理。要保存它,请使用file_put_contents($filename, $data)
将其转储到文件中// Instead of 'echo $response';
file_put_contents('image.jpg', $response);
您将在脚本的目录中看到一个新文件image.jpg
。
这假设图像是jpeg,您可以在保存之前进行一些检查以确定类型。
答案 1 :(得分:-1)
我可以将文件保存在文件夹中,但问题是它显示错误 - 窗口照片查看器无法打开此图片,因为文件似乎已损坏,损坏或太大
这是我的代码
$oAuthToken = $token->access_token;
$getUrl = 'https://www.googleapis.com/drive/v2/files/' . $googlefileid . '?alt=media';
$authHeader = 'Authorization: Bearer ' . $oAuthToken ;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $getUrl);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
$authHeader ,
]);
$data = curl_exec($ch);
curl_close($ch);
Storage::put($googlfilename,$data);
请告诉我我做错了什么。