使用cURL php从URL下载带扩展的图像

时间:2015-07-21 09:11:35

标签: php curl

我正在尝试从提供的链接下载GooglePlay应用的图标。

例如。 https://lh5.ggpht.com/j0y0xf18PF8iZ_qyKekah11Gg7fteqhqm_VC0SQg7oMsIyMPato7Z_zBsGmOtTf2Fw=w300

现在当我使用cURL下载图像时,使用以下代码

function scaleImageAndSaveIt($appName,$imageURL){
    $format="_%d_%m_%Y_%H_%M_%S";
    $strf=strftime($format);

    $imageLocnName = $appName . $strf ;
    $ch = curl_init($imageURL);
    $fp = fopen($imageLocnName, 'wb');
    curl_setopt($ch, CURLOPT_FILE, $fp);
    curl_setopt($ch, CURLOPT_HEADER, true);
    $resp = curl_exec($ch);
    echo $resp;
    curl_close($ch);
    fclose($fp);
    return $imageLocnName; }

现在,当我尝试保存图片时,我没有任何文件扩展名。 (.png,或.jpg或其他任何东西)。但是,当我手动保存图像时,我将图像扩展名设为PNG。

如何使用默认图像名称和扩展名下载图像,或者如何找到扩展名。任何解决方案对我都有帮助。

1 个答案:

答案 0 :(得分:0)

尝试这样的事情,并根据返回值决定使用哪个扩展名:

function GetMimeType($path)
{
    //$type = mime_content_type($file); //deprecated

    /* //file info -> normal method, but returns wrong values for ics files..
    $finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
    $type = $filename.":".finfo_file($finfo, $filename);
    finfo_close($finfo);
    */
    $forbiddenChars = array('?', '*', ':', '|', ';', '<', '>');

    if(strlen(str_replace($forbiddenChars, '', $path)) < strlen($path))
        throw new \Exception("Forbidden characters!");

    $path = escapeshellarg($path);

    ob_start();
    $type = system("file --mime-type -b ".$path);
    ob_clean();
    return $type;
}

function GuessExtension($path)
{
    $type = GetMimType($path);

    $extension = "";
    switch($type)
    {
       case "image/png":
           $extension = ".png";
           break;
        case "image/jpeg":
        default:
           $extension = ".jpg";
           break;
    }
}

//use it like this:

var_dump(GuessExtension("/path/to/your/saved/file"));