file[] beim Upload abwürgen...

crashx

Erfahrenes Mitglied
Es existiert eine "auswahl.html"
HTML:
<form method="POST" enctype="multipart/form-data" action="a_upload.php">
<p><input type="file" name="file[]" size="17"><br>
<input type="file" name="file[]" size="17"><br>
<input type="file" name="file[]" size="17"></p>
<p><input type="submit" value="Absenden" name="send"></p>
</form>
Da kann ich mir Bilder auswählen....
Wenn ich 3 Bilder auswähle, dan ist das alles kein Problem, aber will ich nur ein Bild hochladen, dan beginnt das Problem
Fehler:
Code:
Fehler beim Original erstellen -> ...
\n
Warning: getimagesize(foto/temp_) [function.getimagesize]: failed to open stream: No such file or directory in C:\serverII\xampp\htdocs\walti\a_upload.php on line 23

Warning: unlink(foto/temp_) [function.unlink]: No such file or directory in C:\serverII\xampp\htdocs\walti\a_upload.php on line 105
Fehler beim Original erstellen -> ...
\n
Warning: getimagesize(foto/temp_) [function.getimagesize]: failed to open stream: No such file or directory in C:\serverII\xampp\htdocs\walti\a_upload.php on line 23

Warning: unlink(foto/temp_) [function.unlink]: No such file or directory in C:\serverII\xampp\htdocs\walti\a_upload.php on line 105
Was das Problem ist, das ist mir Bewust, nur der Weg zur Lösung, da happert es bei mir immer noch :(

Verarbeitende a_upload.php
PHP:
<?
$datum = date("dmy");
$zeit = date("Hi");
$dat = $datum.$zeit;

if (isset($_FILES)) 
	{
		for($i = 0; $i < count($_FILES['file']['tmp_name']); ++$i)
			{
				$tempname = $_FILES['file']['tmp_name'][$i];
				$name     = $_FILES['file']['name'][$i];
				$size = getimagesize("$tempname");
				
				if (!copy($tempname, 'foto/temp_'.$name)) 
					{
						echo ('Fehler beim Original erstellen -> '.$originalname.'...<br>\n');
					}
					
						$dir = "foto/";
						$original = "temp_$name";
						$get_data = getimagesize("$dir"."$original");
						
						if($get_data[2]==1)
							{
							$original_temp = imagecreatefromgif("$dir"."$original"); 
            				
  							$height_orig = $get_data[1];
  							$width_orig = $get_data[0];
  							$width = 500;
  							$height = intval($height_orig*$width/$width_orig); 

            					if ($width && ($width_orig < $height_orig)) 
            						{ 
               						$width = ($height / $height_orig) * $width_orig; 
             						} 
             					else 
            						{ 
               						$height = ($width / $width_orig) * $height_orig; 
             						} 
 
             				$newOriginal =  imagecreatetruecolor($width, $height); 

             				imagecopyresampled($newOriginal, $original_temp, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); 

             				imagegif($newOriginal, "$dir"."$dat$name", 100);
         
            				}
            				
            				if($get_data[2]==2)
							{
							$original_temp = imagecreatefromjpeg("$dir"."$original"); 
            				
  							$height_orig = $get_data[1];
  							$width_orig = $get_data[0];
  							$width = 500;
  							$height = intval($height_orig*$width/$width_orig); 

            					if ($width && ($width_orig < $height_orig)) 
            						{ 
               						$width = ($height / $height_orig) * $width_orig; 
             						} 
             					else 
            						{ 
               						$height = ($width / $width_orig) * $height_orig; 
             						} 
 
             				$newOriginal =  imagecreatetruecolor($width, $height); 

             				imagecopyresampled($newOriginal, $original_temp, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); 

             				imagejpeg($newOriginal, "$dir"."$dat$name", 100);
         
            				}
							
							if($get_data[2]==3)
							{
							$original_temp = imagecreatefrompng("$dir"."$original"); 
            				
  							$height_orig = $get_data[1];
  							$width_orig = $get_data[0];
  							$width = 500;
  							$height = intval($height_orig*$width/$width_orig); 

            					if ($width && ($width_orig < $height_orig)) 
            						{ 
               						$width = ($height / $height_orig) * $width_orig; 
             						} 
             					else 
            						{ 
               						$height = ($width / $width_orig) * $height_orig; 
             						} 
 
             				$newOriginal =  imagecreatetruecolor($width, $height); 

             				imagecopyresampled($newOriginal, $original_temp, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); 

             				imagepng($newOriginal, "$dir"."$dat$name", 100);
         
            				}

            					
            					$delete = "$dir"."temp_$name";
								unlink($delete); 

            				
						//Hier endet das Original bearbeiten.
							
						
					
				if (is_uploaded_file($tempname)) 
          			{ 
						if($size[2]==1)
							{
							$im_temp = imagecreatefromgif($tempname); 
            				
  							$height_orig = $size[1];
  							$width_orig = $size[0];
  							$width = 100;
  							$height = intval($height_orig*$width/$width_orig); 

            					if ($width && ($width_orig < $height_orig)) 
            						{ 
               						$width = ($height / $height_orig) * $width_orig; 
             						} 
             					else 
            						{ 
               						$height = ($width / $width_orig) * $height_orig; 
             						} 
 
             				$newImg =  imagecreatetruecolor($width, $height); 

             				imagecopyresampled($newImg, $im_temp, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); 

             				imagegif($newImg, "$tempname", 100); 

             				move_uploaded_file($tempname,"thumb/thumb_$dat$name"); 

            				}
            			if($size[2]==2)
							{
							$im_temp = imagecreatefromjpeg($tempname); 
            				
  							$height_orig = $size[1];
  							$width_orig = $size[0];
  							$width = 100;
  							$height = intval($height_orig*$width/$width_orig); 

            					if ($width && ($width_orig < $height_orig)) 
            						{ 
               						$width = ($height / $height_orig) * $width_orig; 
             						} 
             					else 
            						{ 
               						$height = ($width / $width_orig) * $height_orig; 
             						} 
 
             				$newImg =  imagecreatetruecolor($width, $height); 

             				imagecopyresampled($newImg, $im_temp, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); 

             				imagejpeg($newImg, "$tempname", 100); 

             				move_uploaded_file($tempname,"thumb/thumb_$dat$name"); 

            				}
						if($size[2]==3)
							{
							$im_temp = imagecreatefrompng($tempname); 
            				
  							$height_orig = $size[1];
  							$width_orig = $size[0];
  							$width = 100;
  							$height = intval($height_orig*$width/$width_orig); 

            					if ($width && ($width_orig < $height_orig)) 
            						{ 
               						$width = ($height / $height_orig) * $width_orig; 
             						} 
             					else 
            						{ 
               						$height = ($width / $width_orig) * $height_orig; 
             						} 
 
             				$newImg =  imagecreatetruecolor($width, $height); 

             				imagecopyresampled($newImg, $im_temp, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); 

             				imagepng($newImg, "$tempname", 100); 

             				move_uploaded_file($tempname,"thumb/thumb_$dat$name"); 

            				}
					}
            				
					 
        	}
	}		
						
						include('com/connect.php');
						$eintrag = " 
                    
	                    INSERT INTO 
	                    
	                    `galerie`
	                    
	               		SET 
	                      
	                    `foto`   = '".mysql_real_escape_string('foto/'.$dat.$_FILES['file']['name'][0])."', 
	                  	`thumb`   = '".mysql_real_escape_string('thumb/thumb_'.$dat.$_FILES['file']['name'][0])."'"; 
	            		$eintragen = mysql_query($eintrag);
	            		$sql = 'OPTIMIZE TABLE `galerie`';
//----------------------------------
	                    $eintrag = " 
	                    
	                    INSERT INTO 
	                    
	                    `galerie`
	                    
	               		SET 
	                      
	                    `foto`   = '".mysql_real_escape_string('foto/'.$dat.$_FILES['file']['name'][1])."', 
	                  	`thumb`   = '".mysql_real_escape_string('thumb/thumb_'.$dat.$_FILES['file']['name'][1])."'"; 
	            		$eintragen = mysql_query($eintrag);
	            		$sql = 'OPTIMIZE TABLE `tuning`';
//----------------------------------	            		
	                    $eintrag = " 
	                    
	                    INSERT INTO 
	                    
	                    `galerie`
	                    
	               		SET 
	                      
	                    `foto`   = '".mysql_real_escape_string('foto/'.$dat.$_FILES['file']['name'][2])."', 
	                  	`thumb`   = '".mysql_real_escape_string('thumb/thumb_'.$dat.$_FILES['file']['name'][2])."'"; 
	            		$eintragen = mysql_query($eintrag);
	            		$sql = 'OPTIMIZE TABLE `tuning`';            		
	            		?>
Ich glaube das die a_upload.php, da von der auswahl.html 3 file[] kommen aber nur eines über eine Pfadangabe verfügt und die anderen Leer sind, möchte die a_upload.php aber alle 3 file[] verarbeiten.
Ich habe darüber nachgedacht das ganze über eine "if" Anweisung zu Lösen, aber ich weiss nicht ganz wie ich Prüfen soll was Leer ist,
PHP:
if(empty($_POST['file[]']))
Da ja alle <input> über den selben Namen verfügen: file[].
Ich stehe einfach auf der leitung.
Im weiteren glaube ich das mein Lösungsansatz einfach zu viel Code ergibt, ich müsste dan ja in etwa so vorgehen:
wenn 3 voll mach das.
wenn 2 voll mach das.
wenn 1 voll mach das.
wenn 0 voll Fehler.
und das wird für das gewünschte einfach zu gross.

Ich hoffe Ihr könnt mich Verstehen, und habt mir ein paar tips vorrätig :)

greatz CrashX
 
das file[] lässt mir durch den Teil in der upload.php:
PHP:
for($i = 0; $i < count($_FILES['file']['tmp_name']); ++$i)
eine zuweisung machen.

zb:

HTML:
<input type="file" name="file[]">
<input type="file" name="file[]">
<input type="file" name="file[]">

Das sieht dan in etwa so aus in der *.php:
PHP:
$_FILES['file']['tmp_name'][0]; 
$_FILES['file']['tmp_name'][1]; 
$_FILES['file']['tmp_name'][2];

und so weiter...

das lässt mich Flexibel bleiben, wenn ich mal 6 upload Felder will....
 
Kannst ja erstmal mit print_r($_FILES) prüfen was überhaupt ankommt.
Vielleicht ist dann der Fehler klarer Erkennbar .
 
Den Fehler habe ich beschrieben :)
mal genau lesen....

Ich habe auch schon einen lösungsansatz Kreiert....
aber ich komme nicht ganz weiter...
 
> mal genau lesen....

Naja, wenn No such file or directory kommt findet er die Datei nicht.

=> getimagesize(foto/temp_)

Jo da wird wohl nichts übergeben.

> ++$i)

Hmm, ist das nicht $i++ ?
 
@CIX88

Wenn du genau lesen würdest! dan würdest du sehen das ich schon eine gründliche Fehler Analyse gemacht habe!
Und nur unterstüzung suche im bereich

Zitat:

Ich glaube das die a_upload.php, da von der auswahl.html 3 file[] kommen aber nur eines über eine Pfadangabe verfügt und die anderen Leer sind, möchte die a_upload.php aber alle 3 file[] verarbeiten.
Ich habe darüber nachgedacht das ganze über eine "if" Anweisung zu Lösen, aber ich weiss nicht ganz wie ich Prüfen soll was Leer ist,

PHP-Code:

PHP:
if(empty($_POST['file[]']))

Da ja alle <input> über den selben Namen verfügen: file[].
Ich stehe einfach auf der leitung.
Im weiteren glaube ich das mein Lösungsansatz einfach zu viel Code ergibt, ich müsste dan ja in etwa so vorgehen:
wenn 3 voll mach das.
wenn 2 voll mach das.
wenn 1 voll mach das.
wenn 0 voll Fehler.
und das wird für das gewünschte einfach zu gross.

der Lösungs suche :)
 
Prüfe doch über $_FILES['file']['error'][$i] ...ob es einen Fehler beim Upload gab...z.B. nichts hochgeladen wurde.

Gibt das 4 zurück, wurde nichts hochgeladen.
 
Wenn Du die Upload-Felder im Formular mit file[] benennst muesstest Du eigentlich ueber $_FILES['file'][$i]['name'] an die Daten kommen und nicht ueber $_FILES['file']['name'][$i].
 
Zurück