Upload-Skript klappt nur bei manchen Dateien

Coach

Aktives Mitglied
Hallo
ich habe grade den Fancy Upload ausprobiert. Er funktioniert auch bis auf ein kleines aber wichtiges Detail: Ich steuere mit dem Upload (Übergabe einer ID und einem Gallerienamen) die Datei uplooad.php mit folgendem Inhalt an:

CODE <?php

$result = array();
if (isset($_FILES['photoupload']) ){
$name = $_FILES['photoupload']['name'];
$file = $_FILES['photoupload']['tmp_name'];
$error = false;
$size = false;
$image_ext = strtolower(strrchr($name,"."));

include_once '../../includes/image_function.inc.php';
if($_REQUEST["gal"] == "location_news_image"){
$query = "INSERT INTO system_location_news_images(IMAGE_EXT,NEWS_ID,IMAGE_DATE) VALUES ('".$image_ext."','".$_REQUEST["id"]."',NOW())";
$dir = "../../media/img/location_news_images/";
}

if(!is_dir($dir)) mkdir($dir, 0777);
mysql_query($query,$database)or die(mysql_error());
$image_id = mysql_insert_id();
$image_file = $dir . $image_id . "_xxl" . $image_ext;
$image_std = $dir . $image_id . $image_ext;
$thumb_medium = $dir . $image_id . "_thumb_medium" . $image_ext;
$thumb_small = $dir . $image_id . "_thumb_small" . $image_ext;

move_uploaded_file($file,$image_file);
makeThumb($dir,$image_id,$image_ext,"_thumb_medium",$_REQUEST["gal"]);
makeThumb($dir,$image_id,$image_ext,"_thumb_small",$_REQUEST["gal"]);
makeThumb($dir,$image_id,$image_ext,"",$_REQUEST["gal"]);
}
echo $result;
?>


Das funktioniert bisweilen so weit, dass ich die xxl-Bilder auf meinen Webspace geladen bekomme und auch die Datenbankeintragung funktioniert. Das Problem ist aber, das bei manchen Dateien (ich hab net rausgefunden welche) keine Thumbnails erzeugt werden. Hier das Skript mit dem ich die Thumbails erzeuge:


CODE
<?php

function makeThumb($path,$id,$ext,$add,$cat) {

$old_file_path = $path . $id . "_xxl" . $ext;
$new_file_path = $path . $id . $add . $ext;

$size = getimagesize($old_file_path);

switch($cat){
case "location_news_image":
switch($add){
case "_thumb_small": $new_width = 42; $new_height = 49; break;
case "_thumb_medium": $new_width = 77; $new_height = 83; break;
case "": $new_width =300; $new_height = 250;break;
}
break;
}

switch($ext) {
case ".jpg": case ".jpeg": $src_img = imagecreatefromjpeg($old_file_path); break;
case ".gif"; $src_img = imagecreatefromgif($old_file_path); break;
case ".png": $src_img = imagecreatefrompng($old_file_path); break;
}

$dst_img = imagecreatetruecolor($new_width,$new_height);
ImageCopyResampled($dst_img,$src_img,0,0,0,0,(int)$new_width,(int)$new_height,ImageSX($src_img),ImageSY($src_img));
imagedestroy($src_img);

imagejpeg($dst_img,$new_file_path);
imagedestroy($dst_img);
}
?>



Das seltsame is, dass ich das alles mit 4 .jpg Dateien probiert habe. Bei zweien klappt das, bei zweien nicht
ohmy.gif
 
und die Dateien werden alle 4 korrekt hochgeladen, nur die Verkleinerung klappt bei 2en nicht?
 
genau!
2 Stück erscheinen als _xxl Datei mit den 3 kleineren Thumbnails, die anderen beiden nur als _xxl Datei
habe grade versucht, diese 2 downzuloaden.. da kam zuerst ein Fehler wegen chmod...
den hab ich jetzt anders gesetzt und die dateien runtergeladen.
werden korrekt angezeigt :-(
 
Dann debugge mal in der thumbnails Funktion, schau ob es Meldungen gibt.

Was unterscheidet die beiden Bilder von den anderen beiden? Größe? Evtl. ist nicht genug Speicherplatz auf dem Server? Was ich zwar nicht glaube, aber man weiß ja nie.
 
nein, die beiden bilder werden VOR den funktionierenden hochgeladen.. am Speicherplatz liegts also nicht.
hab auch mal nachgeschaut, es sind noch 64 GB frei,..
an der Größe liegts auch net, die sind alle 4 ungefähr gleich groß (+-40kb)

was meinste mit debuggen? Die Befehle ausgeben? Wenn ja, an welche denkste denn da :)?
 
Verfolge die Abarbeitungsfolge in der makeThumbs() und schau dir z.B. per var_dump() die Werte an, die du an manchen Stellen im Code erwartest. So siehst du, wo die Funktion Fehler macht. Evtl. auch mit die() direkt nach var_dump() arbeiten, dass nicht immer der gesamte Code ausgeführt wird. Das ist Debuggen unter PHP.

Am besten auch error_reporting(E_STRICT | E_ALL) am Anfang der Funktion setzen.

 
Vielleicht werden die überschrieben, weil die id nicht stimmt.
 
die idee übernehme ich ja einfach aus den Daten des _xxl Images.
hab das aber überprüft indem ich nur eines der "Fehlerbilder" hochlade und sonst nix.. das gleiche Ergebnis
 
Zurück
Oben