确定cURL下载的文件类型

时间:2021-08-01 22:33:34

标签: php

我有这个代码,

<?php

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://example.com/v1/items/id/preview",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_POSTFIELDS => "",
  CURLOPT_HTTPHEADER => [
    "Accept: application/json",
    "Authorization: Bearer bearer-string",
    "Content-Type: application/json"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
    file_put_contents('file.jpeg', print_r($response, true));    
}

从该代码我可以看出响应是 jpeg,这就是我指定 file.jpeg 作为文件名的原因。

现在我的问题是,如果响应不是 jpeg 怎么办?

我无法从 https://www.php.net/manual/en/ref.filesystem.php 中找到任何可以动态确定响应文件类型的函数。

对此有任何想法。

1 个答案:

答案 0 :(得分:0)

你可以使用 curl_getinfo 来获取 curl 得到的内容类型

$mime = curl_getinfo(response , CURLINFO_CONTENT_TYPE); 然后简单地检查 $mime 是否等于 'image/jpeg'