File-Upload als Array möglich

Mik3e

Erfahrenes Mitglied
Hi zusammen,

Stehe hier entweder gerade total auf der Leitung oder es geht nicht.
Ich übergebe mehrere Werte als Array per Post:

Code:
<input type="text" name="testdaten[name]" />
<input type="text" name="testdaten[nachname]" />
etc.

Problem:
Nichts besonderes und klappt natürlich wunderbar.
Anders ist das bei File-Feldern. Ich möchte zusätzlich über das Formular auch noch Bilder uploaden. Elegant wäre natürlich auch hier die Lösung als Array, da die Bilder dann alle gleich skaliert gehören, ins selbe verzeichnis etc.etc. Typische foreach Thematik...

Allerdings kann ich die geposteten Daten in dieser Form dann nicht als Array ansprechen:

Code:
<input type="file" name="foto[1]" style="width:250px" />
<input type="file" name="foto[2]" style="width:250px" />
<input type="file" name="foto[3]" style="width:250px" />
Hat jemand eine Ahnung, ob das der Browser aus Sicherheitsgründen unterbindet (so wie auch das Eintragen eines values!?)

Danke für alle Tipps,
Ciao,
Mike
 
Steht der enctype des Fomulars auf "multipart/form-data"? Wie greifst du im Script auf die übergebenen Daten zu?

HTML:
<!-- Die Zahlen im Array kannste dir eigentlich sparen : -->
<input type="file" name="foto[]" style="width:250px" />
<input type="file" name="foto[]" style="width:250px" />
<input type="file" name="foto[]" style="width:250px" />
Lass die Indizes des Arrays am besten Weg, so kannst du den Array recht bequem mit einer Schleife durchlaufen. Hat den Vorteil, dass du die Datei-Funktionen nur einmal definieren musst, und nicht für jedes vorhandenes Feld einzeln. So sind auch beliebig viele File-Felder möglich.
PHP:
    // File-Felder in Schleife durchlaufen
    $count_files = count( $_FILES );

    for( $i = 0 ; $i < $count_files ; $i++ )
    {
        // Prüfen, ob Feld ausgefüllt wurde und Datei vorhanden ist (sollte etwas ausführlicher sein)
        if( is_file( $_FILES[ 'file' ][ 'tmp_name' ][ $i ] ) )
        {
            // Dateioperationen durchführen (Bild kopieren, verkleinern, etc.)
            copy( $_FILES[ 'file' ][ 'tmp_name' ][ $i ] , 'images/' . $_FILES[ 'file' ][ 'name' ][ $i ] );
        }
    }

Hoffe geholfen haben zu können :)
 
Hi,

Klar hab ich vorher getestet, ob der Upload funktioniert :) Das passt alles.
Ich habe es jetzt so gelöst, dass ich direkt den internen $_FILE Pointer verwende.
Das geht allerdings nur gut, solange es nur die drei Images gibt und nicht etwa noch ein zusätzliches PDF Dokument (das dann natürlich auch im selben Array hängen würde und bei dem die Abfragen auf Image-Gültigkeit natürlich komplett daneben gehen würden).

Ciao,
Mike
 
Zurück