file[] beim Upload abwürgen...

Das Problem wird wohl an dieser Zeile liegen:

for($i = 0; $i < count($_FILES['file']['tmp_name']); ++$i)

Du prüfst nicht wirklich welches von file[] auch Daten enthält, sondern jagst knallhart alles durch die Schleife.
Wenn nur ein Bild hochgeladen wird, wird dennoch die Schleife bis zum Schluss durchlaufen.
Und da file[1] - [3] nicht vorhanden ist, kommt es zur Fehlermeldung.
Arbeite doch mit foreach() und frage ab, ob wirklich in file[0] Bildaten enthalten

EDIT:

also zusätzlich if ( isset($tempname) ) { } ...
Aber das müsste dir eigentlich auffallen bei print_r($_FILES).
 
Zuletzt bearbeitet von einem Moderator:
Ach...isses garnicht :)
PHP:
<?php
if(isset( $_FILES['file'] ))
  {
    for( $i = 0; $i < count($_FILES['file']['error']); ++$i )
      {
        if( $_FILES['file']['error'][$i] === 0 
              && is_uploaded_file( $_FILES['file']['tmp_name'][$i] )
          )
            {
              //weitermachen
            }
        else
            {
              echo 'Datei #' . $i . ' =&gt;Upload-Fehler:#'.
                    $_FILES['file']['error'][$i] . '<br>';
            }
      }
  }
?>
 
Ok ich bin am umdenken ;)

Ich prüfe jetzt ob in dem dateiupload feld überhaupt was drin steht oder nicht.

Da ich von PHP nicht viel verstehe griff ich auf meine Schmähliches wissen zurück,
doch das ergebnis ist nicht das was ich erwartet hatte :)

Ich wollte eine einfache feldüberprüfung machen mittels if(empty)
auf ein normales Textfeld angewandt ist das Ergebnis Richtig.
doch verwendet man ein dateiupload Feld, ist die überprüfunf immer fehler haft.

form:
HTML:
<form method="POST" action="upload.php" enctype="multipart/form-data">
	<input type="file" name="file1" size="20">
	<input type="submit" value="Senden" name="send">
</form>

upload.php

PHP:
<?
if(empty($_FILES['file1']))
	{
	$ok = 0;
	}
  else
	{
	$ok = 1;
	}
	  	
if($ok)
	{
	echo 'da hats was drin';
	}
else
	{
	echo 'da ist was faul';
	}
?>
Wendet man das ganze so an:
HTML:
<input type="text" name="file1" size="20">
PHP:
if(empty($_POST['file1']))
dan überprüft es richtig.
Wieso kann ich ein Uploadfeld nicht so Prüfen?
und wie sieht mein Lösungs Weg aus?
 
Müsste das nicht heißen:
PHP:
<? 
if(empty($_FILES['file1'])) 
    { 
    $ok = 0; 
    } 
  else 
    { 
    $ok = 1; 
    } 
           
if($ok == 1) // <--- das hier mein ich!
    { 
    echo 'da hats was drin'; 
    } 
else 
    { 
    echo 'da ist was faul'; 
    } 
?>
 
crashx hat gesagt.:
Wieso kann ich ein Uploadfeld nicht so Prüfen?
und wie sieht mein Lösungs Weg aus?

Weil die entsprechende Servervariable nicht leer ist(empty) ...sie enthält leere Arrays, wenn nichts hochgeladen wurde...was nicht dasselbe ist.

Den Lösungsweg kannst du meinem vorausgegangenen Posting entnehmen :confused:
 
@hektik

Nein nein Das Funktioniert schon so:

PHP:
if($ok)

weil wen $ok = 0; 0 ist meines wissens kein wert, wen $ok = 1; dan besitzt es ein wert
bei mir Funktioniert es immer bei einer Nornamlen Feld abfrage.

@Sven

Das ist mir jetzt auch Bewusst :)
Doch ich bin nicht ganz so schnell mit den Versdchiedenen Varianten zu Arbeiten.

Danke :)
 
@Sven

Irgend Wie habe ich das nicht ganz Kapiert :(

Ich habe die Upload jetzt umgebaut, aber jetzt passiert nichts mehr, nicht mal eine Relevante Fehler Meldung mit "error_reporting(E_ALL);"
Bilder werden nicht hochgeladen, nichts geht?

PHP:
<?php session_start ();

error_reporting(E_ALL);

$datum = date("dmy");
$zeit = date("Hi");
$dat = $datum.$zeit;


if(isset( $_FILES['file'] ))
  {
    for( $i = 0; $i < count($_FILES['file']['error']); ++$i )
      {
        if( $_FILES['file']['error'][$i] === 0 
        && is_uploaded_file( $_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); 

			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"); 
            		}
         		}
       		  else
            	{
              	  echo 'Datei #' . $i . ' =&gt;Upload-Fehler:#'.
              	  $_FILES['file']['error'][$i] . '<br>';
            	}
            }
            
	  }
  }
?>

Keine Ahnung was da los ist. Wen ich keine Fehlermeldung bekomme weiss ich auch nie weiter :(
 
Lagere mal Teile – etwa wiederkehrede Algorithmen – in Funktionen aus. Damit wird zumindest der Quellcode etwas übersichtlicher. Nachfolgend eine Funktion zum Erzeugen von Miniaturgrafiken.
PHP:
/**
 * Erstellt eine Minitaturgrafik von einem Original
 *
 * @param    string   $srcFilename   Pfadangabe der Quellgrafik
 * @param    int      $width         Maximalbreite der Miniaturgrafik
 * @param    int      $height        Maximalhöhe der Miniaturgrafik
 * @param    string   $dstFilename   optional: Pfadangabe zur Speicherung der Miniaturgrafik
 * @param    int      $quality       nur bei JPEG-Grafiken: Qualität der Miniaturgrafik
 * @return   mixed
 */
function image_createThumbnail( $srcFilename, $width, $height, $dstFilename=null, $quality=75 )
{

	if( file_exists($srcFilename) || is_readable($srcFilename) ) {
		return false;
	}
	if( $srcInfo = getimagesize($srcFilename) ) {
		return false;
	}
	switch( $srcInfo[2] ) {
		case 1:
			$dstIm = imagecreatefromgif($srcFilename);
			break;
		case 2:
			$dstIm = imagecreatefromjpeg($srcFilename);
			break;
		case 3:
			$dstIm = imagecreatefrompng($srcFilename);
			break;
		default:
			return false;
	}
	if( $width && ($srcInfo[0] < $srcInfo[1]) ) {
		$width  = ($height / $srcInfo[1]) * $srcInfo[0];
	} else {
		$height = ($width / $srcInfo[0]) * $srcInfo[1];
	}
	$dstIm = imagecreatetruecolor($width, $height);
	imagecopyresampled($dstIm, $srcIm, 0, 0, 0, 0, $width, $height, $srcInfo[0], $srcInfo[1]);
	switch( $srcInfo[2] ) {
		case 1:
			return imagegif($dstIm, $dstFilename);
			break;
		case 2:
			return imagejpeg($dstIm, $dstFilename, $quality);
			break;
		case 3:
			return imagepng($dstim $dstFilename);
			break;
		default:
			return false;
	}

}
Ich hoffe, sie funktioniert. Ist bisher ungetestet.
 
Zurück