Bildupload (mal wieder) - Probleme mit getimagesize?

Mayko

Grünschnabel
Bildupload - Probleme mit getimagesize!?

Moin, moin und Hallo zusammen, :p

ich habe vor kurzem nach einem Script für einen Bildupload gesucht, dass das hochzuladene Bild zu einem Großbild und zu einem Kleinbild scalliert.

Ich habe, meines erachtens, ein recht gutes und einfaches Script gefunden:
http://www.zudila.ch/scripte/php_bildup.php

Es ist eigentlich alles so angelegt wie auf der zudila beschrieben (CHMOD 775 ~ 777). Ich bekomme bei mir aber schon beim ersten anschauen der Seite diese Fehlermeldung:
Code:
Warning: getimagesize(): Unable to access bildup/_norm. in /home/www/doc/www.XXX.de/galerie.php on line 172

Warning: getimagesize(bildup/_norm.): failed to open stream: No such file or directory in /home/www/doc/www.XXX.de/galerie.php on line 172


Nach 10 weiteren (gleichen/ähnlichen) Fehlermeldungen kommt unten drunter das normale Uploadformular.
Es können sogar Bilder hochgeladen werden (habe ich per FTP kontrolliert), nur sie werden halt nicht angezeigt.

Ich dachte zuerst, der Pfad wird nicht gefunden, ... aber eigentlich habe ich keine Ahnung wo der Fehler steckt. :confused:

Hier ist aus meines Script die line 172:
HTML:
$gross1_norm = getimagesize($bildlink.'/'.$bild_1_norm);

Hmmm, die Suchfunktion kenne ich natürlich, bloß habe ich meinen Fehler nicht genau lokalisieren können. Wenn ich nach: getimagesize() suche, finde ich nur Problem beim Upload, aber es sind ja beide Bilder da: bild_small.jpg, bild_norm.jpg

Hoffe Ihr könnt mir helfen. Danke schonmal...

Mayko :-)
 
Zuletzt bearbeitet:
Hi,
versuch mal den absoluten Pfad zu deinem Bilderverzeichnis anzugeben.
Diesen kannst du nachlesen, in dem du eine Datei mit dem Inhalt "phpinfo();" erstellst.
Da musst du mal nach "DOCUMENT_ROOT" suchen. Das wäre dein absoluter Pfad.

Vielleicht hilft das ja ;).
 
Was wird denn in $bild_1_norm gespeichert? Der Pfad, der zusammengesetzt wird, scheint ja nicht ganz richtig zu sein: "bildup/_norm.", hier dürfte auch der Fehler sein.
 
sorry, sorry, sorry,

habe den ganzen Tag viel zu tun gehabt und komme erst jetzt dazu Euch zu Antworten.

Hier mal das gesamte Script für den Überblick:
Code:
include ("inc/connect.php");

// Der Link zum Uploadverzeichnis
$bildlink = 'bildup' ;
// Für die DB, im Beispiel immer Satz-Nr. 1
$selection = 1 ;

// löschen -----------------------------
if ($_POST['delete']) {
  // löschen in Ordner
  $bildteil = split("[.]",$bild_bild) ;
  $bild_bild_norm = $bildteil[0].'_norm.'.$bildteil[1] ;
  $bild_bild_small = $bildteil[0].'_small.'.$bildteil[1] ;

  unlink( $bildlink.'/'.$bild_bild_norm ) ;
  unlink( $bildlink.'/'.$bild_bild_small ) ;

  // leeren in der Datenbank
  $query = "
  UPDATE bildup
  SET ".$bild_db." = ''
  WHERE id_bild = '".$selection."' " ;
  $result = mysql_query($query) ;
}

// prüfen vor hochladen --------------------
if ($_POST['submit']) {
  $dateiname = $_FILES['datei']['name'] ;
  $dateitype = $_FILES['datei']['type'] ;
  $dateisize = $_FILES['datei']['size'] ;

  if (empty($dateiname)) {
    $fehlermeldung = '<span class="rot"><br /><br />
    Du musst eine Datei angeben!<br /><br /></span>' ;
  }
  elseif ( $dateisize > '524000') {
    $fehlermeldung = '<span class="rot"><br /><br />
    Deine Datei überschreitet die erlaubte
    Datei-Grösse von 500 kByte!<br /><br /></span>' ;
  }
  elseif ( strlen( $dateiname ) > '25') {
    $dateinamengroesse = strlen($dateiname) - 25 ;
    $fehlermeldung = '<span class="rot"><br /><br />
    Der Dateiname überschreitet die maximal erlaubte Zeichenlänge
    um <strong>'.$dateinamengroesse.'</strong>Zeichen!<br />
    <br /></span>' ;
  }
  elseif ( $dateitype == 'image/jpeg' || $dateitype == 'image/pjpeg' ||
  $dateitype == 'image/x-png' ) {
    //Wandelt einige Sonderzeichen um
    $dateiname1 = strtr("$dateiname", " äöüß", "_aous") ;
    //Wandelt den Dateinamen in Kleinbuchstaben um
    $dateiname2 = strtolower("$dateiname1") ;

    $bildteil = split("[.]",$dateiname2) ;
    $dateivorhanden =
    file_exists($bildlink.'/'.$bildteil[0].'_norm.'.$bildteil[1]) ;

    if ($dateivorhanden) {
      $fehlermeldung = '<span class="rot"><br /><br />
      Eine Datei mit dem Dateinamen <strong>'.$dateiname2.'</strong>
      ist bereits vorhanden, bitte wähle einen anderen Namen.<br />
      <br /></span>' ;
    }
    else {
      // hochladen der Ursprungsdatei -----------------------
      move_uploaded_file( $datei , $bildlink.'/'.$dateiname2 ) ;

      // nun grösse bestimmen und berechnen
      $gross = getimagesize( $bildlink.'/'.$dateiname2 ) ;
      $breite = $gross[0] ;
      $hoehe = $gross[1] ;
      $typ = $gross[2] ;

      $hoehe_norm = $hoehe * 200 / $breite ;
      $image_norm = imagecreatetruecolor( 200 , $hoehe_norm ) ;

      $hoehe_small = $hoehe * 50 / $breite ;
      $image_small = imagecreatetruecolor( 50 , $hoehe_small ) ;

      // neue Bildnamen
      $bild_s = split("[.]",$dateiname2);
      $dateiname2_norm = $bild_s[0].'_norm.'.$bild_s[1] ;
      $dateiname2_small = $bild_s[0].'_small.'.$bild_s[1] ;

      // Normbild erstellen
      switch ($typ) {
        case 2:
          $image = imagecreatefromjpeg( $bildlink.'/'.$dateiname2 ) ;
          break;
        case 3:
          $image = imagecreatefrompng( $bildlink.'/'.$dateiname2 ) ;
          break;
      }
      imagecopyresampled($image_norm, $image, 0,0, 0,0,200,
      $hoehe_norm,$breite,$hoehe);

      switch ($typ) {
        case 2:
          imagejpeg($image_norm, $bildlink.'/'.$dateiname2_norm , 100 );
          break;
        case 3:
          imagepng($image_norm, $bildlink.'/'.$dateiname2_norm );
          break;
      }

      // Smallbild erstellen
      switch ($typ) {
        case 2:
          $image = imagecreatefromjpeg( $bildlink.'/'.$dateiname2 ) ;
          break;
        case 3:
          $image = imagecreatefrompng( $bildlink.'/'.$dateiname2 ) ;
          break;
      }
      imagecopyresampled($image_small, $image, 0,0, 0,0,50,
      $hoehe_small,$breite,$hoehe);

      switch ($typ) {
        case 2:
          imagejpeg($image_small, $bildlink.'/'.$dateiname2_small );
          break;
        case 3:
          imagepng($image_small, $bildlink.'/'.$dateiname2_small );
          break;
      }

      // Ursprüngliches Bild löschen
      unlink( $bildlink.'/'.$dateiname2 ) ;

      // DB eintragen
      $query = "UPDATE bildup
      SET ".$bildnummer." = '".$dateiname2."', verfall = ".$verfall."
      WHERE id_bild = ".$id_bild." " ;
      mysql_query($query, $conn);

      $fehlermeldung = '<br /><br />Dein Foto <strong>'.$dateiname2.'</strong>
      wurde erfolgreich abgeschickt!<br /><br />' ;
    }
  }
  else {
    $fehlermeldung = '<span class="rot"><br /><br />
    Es werden nur Dateien von folgendem Typ zum Upload akzeptiert:<br /><br />
    <strong>jpeg, jpg, jpe, png</strong><br /><br />
    Dein Datei-Typ: '.$dateitype.'<br /><br /></span>';
  }

  // auf 0 setzen ---------------------------
  $submit = "" ; $dateityp = "" ; $dateiname = "" ; $dateiname2 = "" ;
  $dateiname2_small = "" ;
  $hoehe = "" ; $breite = "" ;
}

// aus DB -----------------------------------

$query = "
SELECT *
FROM bildup
WHERE id_bild = '".$selection."' " ;
$result = mysql_query($query, $conn);
$row = mysql_fetch_array($result);

$bild_1 = $row['bild_1'] ;
$bild_1_s = split("[.]",$bild_1);
$bild_1_norm = $bild_1_s[0].'_norm.'.$bild_1_s[1];
$bild_1_small = $bild_1_s[0].'_small.'.$bild_1_s[1];
$gross1_norm = getimagesize($bildlink.'/'.$bild_1_norm);
$gross1_small = getimagesize($bildlink.'/'.$bild_1_small);

$bild_2 = $row['bild_2'] ;
$bild_2_s = split("[.]",$bild_2);
$bild_2_norm = $bild_2_s[0].'_norm.'.$bild_2_s[1];
$bild_2_small = $bild_2_s[0].'_small.'.$bild_2_s[1];
$gross2_norm = getimagesize($bildlink.'/'.$bild_2_norm);
$gross2_small = getimagesize($bildlink.'/'.$bild_2_small);

$bild_3 = $row['bild_3'] ;
$bild_3_s = split("[.]",$bild_3);
$bild_3_norm = $bild_3_s[0].'_norm.'.$bild_3_s[1];
$bild_3_small = $bild_3_s[0].'_small.'.$bild_3_s[1];
$gross3_norm = getimagesize($bildlink.'/'.$bild_3_norm);
$gross3_small = getimagesize($bildlink.'/'.$bild_3_small);

// welche Bilder werden als nächstes hochgeladen
if ( $bild_3 == "" ) { $bildnr = "bild_3" ; $titeltext = "Foto 3, Bildtitel 1" ; }
if ( $bild_2 == "" ) { $bildnr = "bild_2" ; $titeltext = "Foto 2, Bildtitel 2" ; }
if ( $bild_1 == "" ) { $bildnr = "bild_1" ; $titeltext = "Foto 1, Bildtitel 3" ; }
?>

<h2>Beispiel</h2>

<center>
<?php echo $fehlermeldung ; ?>
<table>
  <tr>
    <td valign="top">
      <strong>Foto 1</strong><br />
<?php
if ( $bild_1 != "" ) {
  echo '
      <div><img src="'.$bildlink.'/'.$bild_1_small.'" alt="Bildtitel 1"
      width="50" height="'.$gross1_small[1].'" /></div>
    </td>
    <td>
      Bildtitel 1<div><img src="'.$bildlink.'/'.$bild_1_norm.'" alt="Bildtitel 1"
      width="200" height="'.$gross1_norm[1].'" /></div>
    </td>
    <td valign="top" class="rechts">
      '.$bild_1.'<br /><br />
      <form action ="'.$_SERVER['PHP_SELF'].'" method ="post" name="meldung">
        <input type="hidden" name="bild_db" value="bild_1" />
        <input type="hidden" name="bild_bild" value="'.$bild_1.'" />
        <input class="norm" type="submit" name="delete" value="Löschen" />
      </form>
  ';
}
else {
  echo '
    </td>
    <td>Bildtitel 1</td>
    <td class="rechts">Kein Bild!
  ' ;
}
?>
    </td>
  </tr>
  <tr><td colspan="3"><hr /></td></tr>
  <tr>
    <td valign="top">
      <strong>Foto 2</strong><br />
<?php
if ( $bild_2 != "" ) {
  echo '
      <div><img src="'.$bildlink.'/'.$bild_2_small.'" alt="Bildtitel 2"
      width="50" height="'.$gross2_small[1].'" /></div>
    </td>
    <td>
      Bildtitel 2<div><img src="'.$bildlink.'/'.$bild_2_norm.'" alt="Bildtitel 2"
      width="200" height="'.$gross2_norm[1].'" /></div>
    </td>
    <td valign="top" class="rechts">
      '.$bild_2.'<br /><br />
      <form action ="'.$_SERVER['PHP_SELF'].'" method ="post" name="meldung">
        <input type="hidden" name="bild_db" value="bild_2" />
        <input type="hidden" name="bild_bild" value="'.$bild_2.'" />
        <input class="norm" type="submit" name="delete" value="Löschen" />
      </form>
  ';
}
else {
  echo '
    </td>
    <td>Bildtitel 2</td>
    <td class="rechts">Kein Bild!
  ' ;
}
?>
    </td>
  </tr>
  <tr><td colspan="3"><hr /></td></tr>
  <tr>
    <td valign="top">
      <strong>Foto 3</strong><br />
<?php
if ( $bild_3 != "" ) {
  echo '
      <div><img src="'.$bildlink.'/'.$bild_3_small.'" alt="Bildtitel 3"
      width="50" height="'.$gross3_small[1].'" /></div>
    </td>
    <td>
      Bildtitel 3<div><img src="'.$bildlink.'/'.$bild_3_norm.'" alt="Bildtitel 3"
      width="200" height="'.$gross3_norm[1].'" /></div>
    </td>
    <td valign="top" class="rechts">
      '.$bild_3.'<br /><br />
      <form action ="'.$_SERVER['PHP_SELF'].'" method ="post" name="meldung">
        <input type="hidden" name="bild_db" value="bild_3" />
        <input type="hidden" name="bild_bild" value="'.$bild_3.'" />
        <input class="norm" type="submit" name="delete" value="Löschen" />
      </form>
  ';
}
else {
  echo '
    </td>
    <td>Bildtitel 3</td>
    <td class="rechts">Kein Bild!
  ' ;
}
?>
    </td>
  </tr>
</table>
</center>

<?php
// Löschzeitpunkt festlegen
$verfall = time() + 3600 ; // jetzt plus 60 Min.

if ( $bild_1 == "" || $bild_2 == "" || $bild_3 == "" ) {
  echo '
<form method="post" action="'.$_SERVER['PHP_SELF'].'"
enctype="multipart/form-data" name="meldung">
<table>
  <tr>
    <td>
      Es wird hochgeladen: <strong>'.$titeltext.'<br />
      Dateiname:</strong>
      <input type="file" name="datei" size="80" />
    </td>
  </tr>
  <tr>
    <td>
      <input type="hidden" name="id_bild" value="'.$selection.'" />
      <input type="hidden" name="verfall" value="'.$verfall.'" />
      <input type="hidden" name="bildnummer" value="'.$bildnr.'" />
      <input class="norm" type="submit" value="hochladen" name="submit" />
    </td>
  </tr>
</table>
</form>
  ';
}
else {
  echo '<center><div class="rot">Es können keine weiteren Bilder
  hochgeladen werden.</div></center>' ;
}
?>

@shorty: Ich glaube ich weiß was du meinst... Ich habe $bildlink = 'http://absoluterPfad/bildup eingtragen klappt aber auch nicht.
Oder meintest Du das anders?

@Timbonet: das müsste dann ja diese Zeile sein:
Code:
$bild_1_norm = $bild_1_s[0].'_norm.'.$bild_1_s[1];
 
Ich hatte das selbe Problem.

Bei mir hatte die Variable für den Dateinamen nicht die Endung enthalten.
Ich musste die Endung in der Case-Schleife mit einfügen.

$DATEINAME = $ DATEINAME + $ENDUNG;

Dann hat alles geklappt.
 
hmmm, ich glaube jetzt mittlerweile, dass das Problem ganz woanders liegt.
Es werden nämlich keine Daten in die DB geschrieben! Aber die Zugangsdaten im Connect-Script sind richtig eingetragen.
Wenn ich ein Bild hochlade, und das Bild dann manuell in die DB schreibe klappt es wunderbar.

Hat jemand eine Ahnung woran das liegt? Krieg hier noch einen Anfallt :confused:
 
Zuletzt bearbeitet:
Zurück