Ankündigung

Einklappen
Keine Ankündigung bisher.

Multiple Fileupload

Einklappen

Neue Werbung 2019

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

  • Multiple Fileupload

    Hallo,
    ich habe auf meinem Server folgendes Programm von Github installiert:
    https://github.com/rishiv3/Multiple-...ter/upload.php
    Das ganze funktioniert aber nur teilweise, es wird nur eine Datei, aber nicht mehrere, hochgeladen.
    Man kann es hier ausprobieren:
    http://www.fisch.importstation.de/fileuploadtest.htm

    Ich bin für jede Hilfe dankbar.

    PHP-Code:
    <?php
    // TODO -- add dir path
    // upload directory path
    $target_dir "uploads/"//path can be change
    $target_file $target_dir basename($_FILES["fileToUpload"]["name"]);
    $uploadOk 1;
    $imageFileType pathinfo($target_file,PATHINFO_EXTENSION);
    // Check if image file is a actual image or fake image
    if(isset($_POST["submit"])) {
    $check getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if(
    $check !== false) {
    echo 
    "File is an image - " $check["mime"] . ".";
    $uploadOk 1;
    } else {
    echo 
    "File is not an image.";
    $uploadOk 0;
    }
    }
    // Check if file already exists or not
    if (file_exists($target_file)) {
    echo 
    "Sorry, file already exists.";
    $uploadOk 0;
    }
    // Check file size
    if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo 
    "Sorry, your file is too large.";
    $uploadOk 0;
    }
    // Allow certain file formats
    if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
    && $imageFileType != "gif" ) {
    echo 
    "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk 0;
    }
    // Check if $uploadOk is set to 0 by an error
    if ($uploadOk == 0) {
    echo 
    "Sorry, your file was not uploaded.";
    // if everything is ok, try to upload file
    } else {
    // uploading file to the desired directory
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo 
    "The file "basename$_FILES["fileToUpload"]["name"]). " has been uploaded.";
    } else {
    echo 
    "Sorry, there was an error uploading your file.";
    }
    }
    ?>
    Der User soll folgende Form aufrufen:
    HTML-Code:
    <form method="post" action="http://www.fisch.importstation.de/doapicupload.php" enctype="multipart/form-data">  
      <main>
        <input type="file" id="files" name="fileToUpload" multiple />
        <output id="list"></output>
      </main>
    <script>
      function dateiauswahl(evt) {
        var dateien = evt.target.files; // FileList object
    
        // Auslesen der gespeicherten Dateien durch Schleife
        for (var i = 0, f; f = dateien[i]; i++) {
    
          // nur Bild-Dateien
          if (!f.type.match('image.*')) {
            continue;
          }
    
          var reader = new FileReader();
    
          reader.onload = (function(theFile) {
            return function(e) {
              // erzeuge Thumbnails.
              var vorschau = document.createElement('img');
              vorschau.className = 'vorschau';
              vorschau.src   = e.target.result;
              vorschau.title = theFile.name;
              document.getElementById('list').insertBefore(vorschau, null);
            };
          })(f);
          // Bilder als Data URL auslesen.
          reader.readAsDataURL(f);
        }
      }
      // Auf neue Auswahl reagieren und gegebenenfalls Funktion dateiauswahl neu ausführen.
      document.getElementById('files').addEventListener('change', dateiauswahl, false);
    </script>
        <input type="submit" value="upload" name="upload"></form>




  • #2
    Du musst einen Array-Namen vergeben, damit PHP daraus mehrere Werte macht.

    Also name="fileToUpload[]".

    Kommentar


    • #3
      Ja, das hatte ich schon probiert, aber jetzt wird gar keine Datei mehr hochgeladen und Fehler:
      Sorry, file already exists.Sorry, your file is too large.Sorry, only JPG, JPEG, PNG & GIF files are allowed.Sorry, your file was not uploaded.
      wird angezeigt.

      Vielen Dank

      Kommentar


      • #4
        Debuggen und schauen, was in $_FILES drin steht.

        var_dump($_FILES);

        Kommentar


        • #5
          array(1) { ["fileToUpload"]=> array(5) { ["name"]=> array(3) { [0]=> string(30) "ico-Yellow & Green Terra47.jpg" [1]=> string(30) "ico-Yellow & Green Terra48.jpg" [2]=> string(30) "ico-Yellow & Green Terra49.jpg" } ["type"]=> array(3) { [0]=> string(10) "image/jpeg" [1]=> string(10) "image/jpeg" [2]=> string(10) "image/jpeg" } ["tmp_name"]=> array(3) { [0]=> string(14) "/tmp/phpRB0E6w" [1]=> string(14) "/tmp/php65veM2" [2]=> string(14) "/tmp/phpHHwOry" } ["error"]=> array(3) { [0]=> int(0) [1]=> int(0) [2]=> int(0) } ["size"]=> array(3) { [0]=> int(1209) [1]=> int(1215) [2]=> int(1264) } } }

          var_dump sieht gut aus, also ist der Fehler im Github-Programm.
          Wird wohl doch nicht für mehrere Files gedacht sein, wenn es ein File verarbeitet, ein Array aber nicht.

          Kommentar


          • #6
            Sieht doch gut aus. Du musst die Arrays ja nur durchiterieren.

            Kommentar


            • #7
              Vielen Dank, ich habs hinbekommen
              $count=0;
              foreach ($_FILES['fileToUpload']['name'] as $filename){ eingefügt
              $count=$count+1;
              und
              $_FILES["fileToUpload"]["tmp_name"] durch $_FILES["fileToUpload"]["tmp_name"]{$count] usw. ersetzt

              Vielen vielen Dank

              Kommentar


              • #8
                Wird wohl doch nicht für mehrere Files gedacht sein, wenn es ein File verarbeitet, ein Array aber nicht.
                Ein Array reicht vollkommen aus für multiple Informationen. Auf die Ebenen/Tiefe kommt es dabei an.

                Damit bin ich überfordert.
                Dann solltest Du das Lernen, das gehört zu den Grundlagen, die sollte man drauf haben, wenn man programmieren will.
                Competence-Center -> Enjoy the Informatrix
                PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                Kommentar

                Lädt...
                X