php / curl - 使用标头获取远程服务器上的图像扩展

时间:2012-01-19 03:46:59

标签: php image curl

我的网站上有一个表单允许从远程服务器上传图像。当用户输入链接并提交时,我想检查文件并确保它是正确的扩展名,然后再将其复制到我的服务器。

我试图直接使用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;

感谢马里奥!

3 个答案:

答案 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]);