Bilder Upload Skript

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bilder Upload Skript

    Hallo liebe PHP-Community.

    Ich bin gerade dabei, für eine Homepage eine kleine Gallerie zu programmieren, und dabei kommt man natürlich um ein Uploadskript für Bilder nicht herum.

    Also habe ich ein bisschen im Internet geforscht und dann dieses Skript geschrieben:

    PHP-Code:
    <?
        $extensions=explode(",", "jpeg,jpg");
        if ($_FILES['userfile']['tmp_name']<>'none'){
            $file=$_FILES['userfile']['name'];
            $temp=$_FILES['userfile']['tmp_name'];
            if(filesize($temp)<="512000") {
                $path_parts=pathinfo($file);
                if(in_array($path_parts["extension"], $extensions)) {
                    $filename=func_filename($file);
                    $dest="uploads/";
                    $size=getimagesize($temp);
                    $width=$size[0];
                    $height=$size[1];
                    $pic_old=imagecreatefromjpeg($temp);
                    $pic_new=imagecreate(100,100);
                    imagecopyresized($pic_new,$pic_old,0,0,0,0,100,100,$width,$height);
                    imagejpeg($pic_new,$dest."thumbs/".$filename);
                    copy($temp, $dest.$filename);
                    echo 'Datei ist auf dem Server!';
                }
                else {
                    echo 'Datei hat eine ungültige Endung. Nur *.jpg und *.jpeg sind erlaubt.';
                }
            }
            else {
                echo 'Datei ist zu groß. Bitte auf 500 kB begrenzen.';
            }
        }
    ?>
    Die Funktion "func_filename" habe ich selber definiert um Dateinamen wie "Cooles Bild lölölöl voll kraß.jpg" zu vermeiden. Sie sieht folgendermaßen aus:

    PHP-Code:
        function func_filename($name) {
            
    $filename=strtolower($name);
            
    $filename=ereg_replace(" ""_"$filename);
            
    $filename=ereg_replace("ä""ae"$filename);
            
    $filename=ereg_replace("ö""oe"$filename);
            
    $filename=ereg_replace("ü""ue"$filename);
            
    $filename=ereg_replace("ß""ss"$filename);
            return 
    $filename;
        } 
    Die Formulardatei, von der aus auf das Skript gelinkt wird, sieht so aus:

    Code:
    <h1>Bild hochladen</h1>
    <p>
    	<form method="post" enctype="multipart/form-data" action="index.php?page=do_upload">
    		<input type="hidden" name="MAX_FILE_SIZE" value="512000">
    		<input name="userfile" type="file"><br><br>
    		<input type="submit" value="Hochladen">
    	</form>
    </p>
    Wenn ich nun damit ein Bild hochladen will, erscheint keine Fehlermeldung. Im Gegenteil, er liefert mir sogar das Ergebnis "Datei ist auf dem Server!", also ist ja offensichtlich kein Fehler aufgetreten.

    Wenn ich aber auf dem Server nachschaue, ist weder die Datei noch das zugehörige Thumbnail hochgeladen worden.

    Die Dateistruktur auf dem Server sieht folgendermaßen aus:

    Code:
    Hauptverzeichnis /
    - panic /
    - - uploads / (Für die großen Bilder)
    - - - thumbs / (Für die Thumbnails)
    - upload.php (Die Forumlardatei)
    - do_upload.php (Die PHP-Datei mit dem Skript)
    Ich hoffe, ihr könnt mir helfen =)
    This is what happens when an unstoppable force meets an immovable object.

  • #2
    Deine index.php liegt wahrscheinlich in /, versucht von dort aus in uploads/ zu schreiben, aber der korrekte Pfad wäre panic/uploads/. Sehe ich das richtig?
    Nutze move_uploaded_file() statt copy() und fang dessen Rückgabe ab.

    Kommentar


    • #3
      Nein, das hab ich wohl vergessen.

      Also nochmal Dateistruktur:

      Code:
      Hauptverzeichnis /
      - panic /
      - - uploads /
      - - - thumbs /
      - - index.php
      - - upload.php
      - - do_upload.php
      Mit move_uploaded_file() funktioniert es ebenso nicht.

      Das Thumbnail wird korrekt erstellt und gespeichert, das normale Bild jedoch nicht.

      Wenn ich noch echo vor move_uploaded_file() oder copy() setze, liefern beide "1" zurück...
      This is what happens when an unstoppable force meets an immovable object.

      Kommentar

      Lädt...
      X