我的网站上有一个表单允许从远程服务器上传图像。当用户输入链接并提交时,我想检查文件并确保它是正确的扩展名,然后再将其复制到我的服务器。
我试图直接使用exif_imagetype,但是服务器上不允许使用allow_url_fopen,所以需要帮助。我认为使用curl会解决问题,但我不确定如何从标题中获取图像扩展名。
先谢谢!
$ch = curl_init ($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec ($ch);
$content_type = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
echo $content_type;
感谢马里奥!
答案 0 :(得分:5)
<强>溶液强>
$ch = curl_init ($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec ($ch);
$content_type = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
echo $content_type;
感谢马里奥!
答案 1 :(得分:0)
基于一些响应,我试图显示来自curl请求的图像,并动态找出标题Content-Type。使用Mario所做的工作以及其他一些功能,这里的函数可以正确显示标准url或文件中的图像,并正确放置在标题中。所有PHP。
function displayImage( $filename ) {
$ch = curl_init();
$options = array(
CURLOPT_URL => $filename,
CURLOPT_ENCODING => "",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPGET => true,
CURLOPT_CONNECTTIMEOUT => 60,
CURLOPT_TIMEOUT => 60
);
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
header('Content-Type: ' . curl_getinfo($ch, CURLINFO_CONTENT_TYPE));
if(!curl_errno($ch)){
curl_close($ch);
$img = imagecreatefromstring($response);
imagejpeg($img);
imagedestroy($img);
return true;
}
else{
curl_close($ch);
return curl_error($ch);
}
}
答案 2 :(得分:0)
您也可以这样操作:
$src = 'https://example.com/image.jpg';
$size = getimagesize($src);
$extension = image_type_to_extension($size[2]);