J'ai une méthode pour enregistrer une image, qui est censée gérer correctement une erreur, en définissant $ imageSrc à une image particulière en cas de défaillance. Ma méthode fonctionne bien si l'image est présente, mais aucune condition d'erreur ne semble être traitée correctement.Problème avec la fonction php pour intercepter l'erreur lors de la sauvegarde de l'image
$imageSrc = save_pic($PIC_URL, $pk);
function save_pic($pic_url, $pk) {
$imageDir = './';
if (!strlen($pic_url))
return "removed.jpg";
if (!is_dir($imageDir) || !is_writable($imageDir)) {
return "removed.jpg";
}
$image = file_get_contents($pic_url);
if (empty($image)) {
return "removed.jpg";
}
$r = file_put_contents($imageDir.$pk.".jpg", $image);
if ($r) {
return "./$pk.jpg";
} else {
return "removed.jpg";
}
}
Si l'image n'existe pas, je reçois:
Warning: getimagesize(http://127.0.0.1/555.jpg) [function.getimagesize]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
in C:\Program Files\EasyPHP 2.0b1\www\get_auction.php on line 144
Array (
[type] => 2 [message] => getimagesize(http://127.0.0.1/555.jpg)
function.getimagesize]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
[file] => C:\Program Files\EasyPHP 2.0b1\www\get_auction.php
[line] => 144
) 1
returned.jpg est jamais retourné en tout état de cause.
modifier: Code ajouté imageResize:
function imageResize($imageURL, $maxWidth, $maxHeight)
{
global $outputWidth, $outputHeight, $maxWidth, $maxHeight;
$size = getimagesize($imageURL);
if ($size) {
$imageWidth = $size[0];
$imageHeight = $size[1];
$wRatio = $imageWidth/$maxWidth;
$hRatio = $imageHeight/$maxHeight;
$maxRatio = max($wRatio, $hRatio);
if ($maxRatio > 1) {
$outputWidth = $imageWidth/$maxRatio;
$outputHeight = $imageHeight/$maxRatio;
} else {
$outputWidth = $imageWidth;
$outputHeight = $imageHeight;
}
} else {
die(print_r(error_get_last()));
}
}
n'est pas fou de PHP ou quoi! :) ... "un gars .Net";) – balexandre
Il manque du code ici ... d'où vient le message getimagesize? –
Il n'est pas clair à quel moment vous appelez imageResize() à partir de votre autre code. S'il vous plaît réorganiser pour fournir tout, y compris le message d'erreur actuel, si vous ne pouvez toujours pas le réparer vous-même, merci. – mark