[英]How to get the image extention from function file_get_content()
我有一個類似這樣的網址
$url ="www.domain.com/image.php?id=123&idlocation=987&number=01";
以前我使用以下代碼獲取擴展名
$img_details= pathinfo($url);
但這將不再起作用,因為url還具有其他變量。 因此,在這種情況下,如何獲取圖像名稱和擴展名。
我知道我應該先使用下載文件
$contenido = file_get_contents($url);
但是不知道如何從中獲取文件名/擴展名
提前致謝
$ch = curl_init();
$url = 'http://www.domain.com/image.php?id=123&idlocation=987&number=01';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$results = split("\n", trim(curl_exec($ch)));
foreach($results as $line) {
if (strtok($line, ':') == 'Content-Type') {
$parts = explode(":", $line);
echo trim($parts[1]);
}
}
返回:image / png
上面的答案都集中在mime類型上,並且在大多數情況下都可以使用,它們都需要額外的資源使用-進行第二次網絡調用以獲取mime類型,或者進行更多的磁盤讀/寫操作以將文件保存到磁盤並使用exif -imagetype函數。 而且兩者都不會返回文件名,這是問題的一部分。 這是使用curl的下載功能,它將以名稱,MIME類型和內容的數組形式返回下載的文件。 此外,如果可能,它將嘗試從URL獲取名稱。
樣品用法
$file=downloadfile($url);
echo "Name: ".$file["name"]."<br>";
echo "Type: ".$file["mimetype"]."<br>";
碼
function downloadfile($url){
global $headers;
$headers=array();
$file=array("content"=>"","mimetype"=>"","name"=>"");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'readHeaders');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$file["content"]=curl_exec($ch);
if(sizeof($headers)){
foreach($headers as $header){
if(!strncasecmp($header,'content-type:',13)){
$file["mimetype"]=trim(substr($header,13));
}
elseif(!strncasecmp($header,'content-disposition:',20)){
$file["name"]=trim(substr(strstr($header,'filename='),9));
}
}
}
if(!$file["name"]){
$query=strpos("?",$url);
$file["name"]=basename(substr($url,0,($query?$query:strlen($url))));
}
unset($headers);
return $file;
}
function readHeaders($ch, $header) {
global $headers;
array_push($headers, $header);
return strlen($header);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.