2015-04-22 3 views
1

Я создал функцию с двумя входными параметрами. 1 вводит url изображения, другой - в основном строку, которая является исходным именем изображения. Я попытался создать его таким образом, чтобы, если ему не удалось получить изображение, верните путь к образцу по умолчанию. Однако это работает в случаях, если он не может получить изображение, но он иногда не работает и создает в основном пустые файлы изображений, поэтому я думаю, что изображение не может быть полностью загружено.функция для сохранения изображений проблема

Мой код ниже.

function saveIMG($img_link, $source){ 

$name = date("Y-m-d_H_i_s_") . mt_rand(1,999) . "_".$source.".jpg"; 
$ch = curl_init($img_link); 
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
$result = curl_exec($ch); 

if ($result === FALSE){ //curl_exec will return false on failure even with returntransfer on 
    $name = "images/news_default.jpg"; 
    return $name; 
} 
else { 
    $fp = fopen("images/$source/$name", 'w'); 
    fwrite($fp, $result); 
    curl_close($ch); 
    fclose($fp); 
    $name ="images/$source/$name"; 
    return $name; 
} 
} 

У вас есть какие-либо идеи, как убедиться, что только сохранить рабочие образа, а не пустые изображения, а также в случае, если изображение пусто вернуть мне новость изображение по умолчанию.

Надеюсь, я был достаточно ясен.

ответ

1

Вы можете использовать getimagesize ("img") и проверить тип.

http://php.net/manual/en/function.getimagesize.php

+0

спасибо, я использовал вашу функцию для того, чтобы быть в состоянии проверить это, и это делает свою работу. –

+0

Ваш прием. Пожалуйста, отметьте как принято. Благодаря! – danc403

1

Спасибо, фиксированная моя проблема после того, как изменили функцию, используя функцию getimagesize !!

function saveIMG($img_link, $source){ 
$name = date("Y-m-d_H_i_s_") . mt_rand(1,999) . "_".$source.".jpg"; 
$ch = curl_init($img_link); 
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
$result = curl_exec($ch); 

if ($result === FALSE){ 
    $name = "images/news_default.jpg"; 
    return $name; 
} 
else { 
    $fp = fopen("images/$source/$name", 'w'); 
    fwrite($fp, $result); 
    curl_close($ch); 

    list($width, $height, $type, $attr) = getimagesize($_SERVER['DOCUMENT_ROOT'] . "/project/images/$source/$name"); 
    if (empty($width)){ 
     unlink('images/$source/$name'); 
     $name = "images/news_default.jpg"; 
     return $name; 
    } 

    if (!empty($width)){ 
     $name ="images/$source/$name"; 
     return $name; 
    } 
    fclose($fp); 
} 

}