Montag, Januar 20, 2020

PHP $_FILES mehrere Datei-Upload problem

Ich habe ein kleines problem mit dem hochladen von mehreren Dateien in PHP ,

habe ich diese html-Formular:

<form method="post" action="upload.php" enctype="multipart/form-data">
    <input type="file" name="myfile[]"  />
    <input type="submit" />
</form>

– und dies ist die upload.php :

<?php print_r( $_FILES ); ?> 

wenn ich sende eine Datei, die es mir zeigen das:

 Array
(
[myfile] => Array
    (
        [name] => Array
            (
                [0] => Krw_Qe4QKmI.mp3
            )

        [type] => Array
            (
                [0] => 
            )

        [tmp_name] => Array
            (
                [0] => 
            )

        [error] => Array
            (
                [0] => 1
            )

        [size] => Array
            (
                [0] => 0
            )

    )

 )

so weit so gut.

das problem beginnt, wenn ich mein Formular dieser :

<form method="post" action="upload.php" enctype="multipart/form-data">
    <input type="file" name="myfile[]"  />
    <input type="file" name="myfile[]"  />
    <input type="submit" />
</form>

nun , wenn ich 2 Dateien , es zeigt mir das :

Array
(
)

so , was ist hier das problem?
danke , Mor.

InformationsquelleAutor some Folk | 2011-09-18

7 Kommentare

  1. 1

    Viele Vorschläge hier. Ich gebe es zu gehen. Dies basiert auf der @Pekka ’s Kommentar.

    Ich sehe, Sie sind Tests mit mp3s, die voraussichtlich über PHP-upload-limit. Dies ist, weil in deinem ersten Beispiel, Sie haben tatsächlich ein upload-Fehler-code 1: The uploaded file exceeds the upload_max_filesize directive in php.ini.. So auch Ihre Faust hochladen hat nicht funktioniert. Einen erfolgreichen upload hat immer 0 als Fehlercode.

    Ändern Sie in php.ini mit upload_max_filesize = 10M (oder 20M oder 300M; vorsichtig M – was bedeutet MB – wie weggelassen, bringt eine Menge Kopfschmerzen.

    Schlage ich vor, die Tests mit kleineren Dateien, wie ich sehe, haben Sie ein limit von 2M für den Upload.

    Weiter Lesen.

  2. 2

    Ich würde Wetten, dass Sie überschritten post_max_size und PHP einfach ignoriert die hochgeladenen Dateien.

    Es ist 8MB standardmäßig. Wenn Sie versuchen, uploaden einer 5MB-Datei funktioniert alles. Wenn Sie versuchen, uploaden 2 5 MB-Dateien, es exceeeds 8MB und PHP ignoriert gebuchten Daten.

    Erhöhen Sie den Wert von post_max_size in der php.ini.

    • ich Tat , änderte sich nichts.
    • aktivieren Sie log_errors und betrachten Sie Ihre server error_log
    • im prüfen jetzt , so weit ich sehen kann, wenn ich hochladen 2 kleine Dateien, die es funktioniert, aber bei größeren Dateien wird es nicht
    • ich mein code auf WAMP 2 32 bit , das ist, was auf meiner ini ;;;;;;;;;;;;;;;; ; Datei-Uploads ; ;;;;;;;;;;;;;;;; ; Ob Datei-uploads per HTTP. ; php.net/file-uploads file_uploads = On ; Temporary directory for HTTP uploaded files (will use system default wenn nicht, angegeben). ; php.net/upload-tmp-dir upload_tmp_dir = „c:/wamp/tmp“ ; die Maximal zulässige Größe für hochgeladene Dateien. ; php.net/upload-max-filesize upload_max_filesize = 2M
  3. 0

    Überprüfen Sie Ihre max_file_uploads Einstellung — ist es mehr als 1?

    echo ini_get('max_file_uploads');
    • ich habe diesen Befehl ausgeführt, aber nichts kam , habe ich auch überprüft in der ini-Datei, die es selbst nicht haben sowas
  4. 0

    Php.ini-Datei muss in etwa so Aussehen:

    ;;;;;;;;;;;;;;;;
    ; File Uploads ;
    ;;;;;;;;;;;;;;;;
    
    ; Whether to allow HTTP file uploads.
    file_uploads = On
    
    ; Temporary directory for HTTP uploaded files (will use system default if not
    ; specified).
    ;upload_tmp_dir =
    
    ; Maximum allowed size for uploaded files.
    upload_max_filesize = 50M
    
    
    ; Maximum number of files that can be uploaded via a single request
    max_file_uploads = 20

    Ändern Sie die Werte der upload_max_filesize und dann den server neu starten

    • ich habe nicht die max_file_uploads Teil auf meiner ini-Datei , können Sie mir sagen, auf welchem system Sie arbeiten und download-link, du bist ini-Datei?
    • Sie müssen ändern Sie Ihre eigene php.ini, es ist nicht gut, das herunterladen von jemand anderem
    • das ist seltsam, Sie können kopieren & fügen Sie den code in Ihr php.ini-Datei und das ist der Inhalt der php.ini empfehlen ich habe php 5.2.17
  5. 0

    Mehrere Dateien auf einmal, versuchen Sie geben einen index wie hier:

    <? For ( $count = 0; count < SOME_MAXIMUM; ++$count; ): ?>
    <input type="file" name="myfile[<? Echo $count; ?>]"  />
    <? endfor; ?>
  6. 0

    Ich hatte das gleiche problem.. Alle meine Bemühungen waren vergeblich, aber schließlich fand ich einen ziemlich guten Hinweis auf das PHP-Handbuch. Es ist einfach, aber für mich perfekt…

    „Mehrere hochladen funktioniert möglicherweise nicht, wenn Sie eine Tabelle für die Anzeige Ihrer
    Formularfelder, wenn <form> element ist innen die <table> element. In diesem
    Fall nur die erste Datei hochgeladen wird,.

    Setzen die <form> element außerhalb das element, um es zu arbeiten.“

    Folgen Sie diesem link für den vollständigen Hinweis, es gibt eine Funktion zum anordnen der mehreren upload-Datei-array in einer einfach zu bedienenden Art und Weise.

    http://php.net/manual/en/features.file-upload.multiple.php

  7. -1

    Das Problem ist, Ihr name="myfile[]" – Attribut auf Ihre input-Element.

    You cant referer später in die PHP-Datei, wenn Sie noch nicht eine Kennung für Sie. Die PHP-Dokumentation gibt dir den selben Tipp:
    http://www.php.net/manual/en/features.file-upload.multiple.php

    Mehrere Dateien können hochgeladen werden, indem unterschiedliche Namen für die Eingabe.

    So ändern Sie den Namen zu „myfile1“ und „myfile2“ (oder ein besserer name ;)) sollte dein problem lösen.

    • Tatsächlich, Sie kann upload mehrere Dateien mit dem gleichen input-name, genau wie OP verwendet: name[].

Kostenlose Online-Tests