Ankündigung

Einklappen
Keine Ankündigung bisher.

Bilder hochladen

Einklappen

Neue Werbung 2019

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

  • Bilder hochladen

    Hallo zusammen!

    Ich habe ein Script, in dem man Bilder hochladen kann.
    Wenn man nun auf den Button "Durchsuchen..." klickt, dann kann man das Bild wählen, das man hochladen möchte.

    Jetzt möchte ich, dass, sobald man auf "hochladen" klickt, das Bild hochgeladen und in den Ordner images hinterlegt wird. Der Ordner ist im selben Verzeichnis wie das Script zum Hochladen.

    Ich hab mal folgendes versucht:
    Code:
    <form name="FORMULAR" action="bilder.php?upload=ja&id=<?=$id?>" method="post" target="_self" enctype="multipart/form-data">
    .
    .
    .
    <input type="file" name="BILD1" size="20" />
    .
    .
    .
    <input type="submit" value="hochladen"/>
    PHP-Code:
    <?
    if(isset($_FILES['BILD1']) and ! $_FILES['BILD1']['error'])
    {
        move_uploaded_file($_FILES['BILD1']['tmp_name'], "./images");
        printf("Die Datei %s steht jetzt zur Verfügung.
    \n", $_FILES['BILD1']['name']);
        printf("Sie ist %u Bytes groß und vom Typ %s.
    \n", $_FILES['BILD1']['size'], $_FILES['BILD1']['type']);
    }
    ?>
    Leider kommen aber folgende Fehlermeldungen:
    Warning: move_uploaded_file(./images): failed to open stream: Permission denied in C:\apachefriends\xampp\htdocs\www\home\PROGRAMM\bi lder.php on line 23
    und
    Warning: move_uploaded_file(): Unable to move 'C:\DOKUME~1\martin\LOKALE~1\Temp\phpEDE.tmp' to './images' in C:\apachefriends\xampp\htdocs\www\home\PROGRAMM\bi lder.php on line 23

    Kann mir hier jemand weiterhelfen?

    Danke im Vorraus für jede Antwort!


  • #2
    probiers mal mit ../images.
    So wie sich das liest hast du in dem Ordner keine Schreibrechte, aber wenn du WIndows hast kann das fast nicht sein, oder er findet den Ordner so nicht wie du ihn angegeben hast, also mal ein bißchen damit rumspielen.

    Gruß HaVoK

    Kommentar


    • #3
      1. DANKE !!!

      Bei ../images ist die Fehlermeldung weg!

      2. Die Datei ist aber nicht in dem Ordner drin

      Ich hab das Laufwerk nach der Datei durchsucht, und hab das hier gefunden:
      Hier ist eine Verknüpfung erschienen
      C:\Dokumente und Einstellungen\martin\Recent

      Frage 1: Warum ist die Datei hier und nicht in Images?
      Frage 2: Warum ist hier nur eine Verknüpfung?

      Kommentar


      • #4
        Man sollte den Dateinamen mit angeben ...

        Kommentar


        • #5
          Hast du dir die Bilder vorher mal mit'nem Bildbetrachter angesehen? Im "Recent"-Verzeichnis befinden sich Links zu "kürzlich" (-> recent) verwendeten Dateien. Klick mal unten links auf "Start", dann auf Dokumente (vorausgesetzt du hast dies aktiviert). In der dortigen Liste sollte das Bild auch zu finden sein. Hat aber (eigentlich) nix mit deinem PHP-Skript zu tun, sondern damit, das du vorher "irgendwas" damit gemacht hast.

          Welchen Wert gibt "move_uploaded_file()" denn zurück (false?) ? Hast du das mal geprüft ? ( Beispiel )
          ToolsTool - Online (SEO-)Tools im Browser gleichzeitig starten ...

          Kommentar


          • #6
            Man oh man, und wieder wird das PHP-Handbuch nicht benutzt
            Vieleicht sollte man die 2. Fehlermeldung nochmal mit Schriftgrösse 30 schreiben.

            Kommentar


            • #7
              "move_uploaded_file()" gibt true zurück.

              AHA! Ich hab nicht den Name, sondern den Pfad als Dateinamen angegeben, sitmmts?

              Jetzt müsste ich dann also nur noch den Pfad mit dem Dateinamen austauschen, stimmts?

              Aber wie?

              Kommentar


              • #8
                Uuuups ... - Wie war das noch? Wer lesen kann, ist klar im Vorteil ... ?!

                PHP-Code:
                <?php

                   move_uploaded_file
                ($_FILES['BILD1']['tmp_name'], "./images");

                ?>
                Das fehlt was hinter dem "./images/". Nicht austauschen, sondern hinzufügen ...

                Man sollte den Dateinamen mit angeben ...
                ToolsTool - Online (SEO-)Tools im Browser gleichzeitig starten ...

                Kommentar


                • #9
                  AHA!

                  Jetzt funktioniert's!
                  PHP-Code:
                  <?
                  if(isset($_FILES['BILD1']) and ! $_FILES['BILD1']['error'])
                  {
                      if(move_uploaded_file($_FILES['BILD1']['tmp_name'], "./images/".$_FILES['BILD1']['name']))
                      {
                          printf("Die Datei %s steht jetzt zur Verfügung.
                  \n", $_FILES['BILD1']['name']);
                          printf("Sie ist %u Bytes groß und vom Typ %s.
                  \n", $_FILES['BILD1']['size'], $_FILES['BILD1']['type']);
                      }
                  }
                  ?>
                  Ich hab eine if-Abfrage gemacht, damit das auch wirklich nur ausgegeben wird, wenn der upload erfolgreich war.

                  2 Fragen hätte ich aber da noch:
                  1. Wie kann ich begrenzen wie groß die Datei ist?
                  2. Wie kann ich den Dateityp begrenzen (also auf gif, jpg, png)?

                  Kommentar


                  • #10
                    PHP-Code:
                    <?php
                    $tempname 
                    $_FILES['bildurl']['tmp_name'];
                    $name $_FILES['bildurl']['name'];
                    $type $_FILES['bildurl']['type'];
                    $size $_FILES['bildurl']['size'];

                    print_r($_REQUEST);
                    echo 
                    '
                    bla '
                    .$name.' '.$type.' '.$size.' bla
                    '
                    ;

                    /* Mit diesen beiden if-Abfragen */
                    if($type != "image/gif" && $type != "image/pjpeg" && $type != "image/jpeg")
                    {
                        
                    $err[] = "nur gif und jpeg Dateien dürfen hochgeladen werden.";
                    }
                    if(
                    $size "150000")
                    {
                        
                    $err[] = "Die Datei welche du hochladen willst, ist zu gross!
                    Maximale Dateigrosse beträgt 150 KB!"
                    ;
                    }
                    if(empty(
                    $err))
                    {
                        
                    copy("$tempname""gfx/$name");
                        echo 
                    "Die Datei $name wurde erfolgreich hochgeladen!";
                    }
                    else
                    {
                        foreach(
                    $err as $error)
                        echo 
                    "$error
                    "
                    ;
                    }

                    ?>
                    Wie lautet die adäquate Antwort auf "ihr benehmt euch wie kleine Kinder!" ?

                    "Er hat Angefangen!"

                    Kommentar


                    • #11
                      VIELEN DANK!

                      Das mit dem Dateityp wirft aber noch eine Frage auf:
                      Wie kann ich einstellen, dass man beim Klicken auf "Durchsuchen..." nur die 3 Dateitypen sehen kann?

                      Sorry, dass ich so viele Fragen hab, aber da ist nochwas:

                      Ich möchte, dass beim Hochladen ein insert in eine MySQL Datenbank gemacht wird. Im Feld BILD_ID soll der Name des Bildes gespeichert werden, damit ich es später wieder aufrufen kann.

                      Ich hab es mal so versucht:
                      PHP-Code:
                      <?
                      if(isset($_FILES['BILD1']) and ! $_FILES['BILD1']['error'])
                      {
                          $tempname    =    $_FILES['BILD1']['tmp_name'];
                          $name        =    $_FILES['BILD1']['name'];
                          $type        =    $_FILES['BILD1']['type'];
                          $size        =    $_FILES['BILD1']['size'];

                      /* +++ nur Dateien vom Typ .gif, .jpg oder .png dürfen hochgeladen werden +++ */
                          if($type != "image/gif" && $type != "image/pjpeg" && $type != "image/x-png")
                          {
                                 $err[] = "Es dürfen nur .gif, .jpg und .png Dateien hochgeladen werden!";
                          }
                      /* +++ nur Dateien bis zu einer Größe von 150 KB dürfen hochgeladen werden +++ */
                          if($size > "150000")
                          {
                                 $err[] = "Die Datei die Sie hochladen wollen, ist zu groß!
                      Die maximale Dateigröße beträgt 150 KB!";
                          }
                      /* +++ wenn alles ok ist, wird die Datei hochgeladen +++ */
                          if(empty($err))
                          {
                              if(move_uploaded_file($tempname, "./images/".$name))
                              {
                                  $insert = "INSERT INTO $tb_name_03 (BILD_ID) VALUES ".$name;
                                  $neuer_eintrag = mysql_query($insert);
                                  if($neuer_eintrag)
                                  {
                                      echo "Die Datei $name steht jetzt zur Verfügung.
                      ";
                                      echo "Sie ist $size Bytes groß und vom Typ $type.
                      ";
                                  }
                              }
                          }
                      /* +++ wenn etwas nicht ok ist, wird eine Fehlermeldung ausgegeben +++ */
                          else 
                          { 
                              foreach($err as $error)
                              echo "$error
                      "; 
                          }
                      }
                      ?>
                      Aber leider wird nichts in die Datenbank geschrieben...
                      bei echo $neuer_eintrag wird nichts angezeigt, ich schätze also, dass es daran liegt.

                      Wie kann ich den Fehler beheben?

                      Kommentar


                      • #12
                        Hab den Fehler gefunden!

                        Der Insert war falsch, so muss er natürlich lauten:
                        PHP-Code:
                        <?
                        $insert = "UPDATE $tb_name_03 SET BILD_ID = '$name' WHERE IDENT = $id";
                        ?>
                        Wenn ich jetzt noch einstellen könnte, dass man nur die gewünschten Dateien sehen kann wär mein Script so gut wie fertig!

                        Kommentar

                        Lädt...
                        X