2010-12-02 15 views
3

ignoriert ich folgend in meiner Sicht habe

<input class="file" name="mpfile[]" type="file" size="32" /> 

In meinem Controller, habe ich den folgenden Code ein.

if(isset($_FILES['mpfile'])) { 
    echo 'testing'; 
} 

Ziemlich einfach oder? .... Abgesehen davon, dass ich jedes Mal, wenn ich es ausführe, egal ob ich eine Datei gewählt habe oder nicht, es läuft ... Sollte es nur das Echo ausführen, wenn ich eine Datei für die Eingabe bereit habe?

+1

'print_r ($ _ FILES)' und sehen, was es ausgibt. – ceejayoz

+1

poste deinen gesamten Code; auch versuchen und neu erstellen CI grundlegende Datei-Uploader @ http://codeignit.com/user_guide/libraries/file_uploading.html – Ross

Antwort

0
if(isset($_FILES['mpfile']['name']) && $_FILES['mpfile']['name']) 
    { 
    echo 'testing'; 
    } 
+0

Nein ... Immer noch nicht funktioniert, könnte es etwas mit der [] nach der mpfile – Chris

0

die <input> Unter der Annahme, in einem <form> eingebettet, die eine POST auf Ihrem Skript tut, haben Sie versucht $_FILES Dumping? Zum Beispiel:

if ('POST' == $_SERVER['REQUEST_METHOD']) 
    { 
    print '<pre>'.var_export($_FILES,TRUE).'</pre>'; 
    } 

Können Sie ein Ergebnis veröffentlichen? Sind auch Uploads für PHP aktiviert?

+0

zu tun haben Das Array wird perfekt ausgedruckt ... Wenn es eine Datei gibt, wird der Dateiname, die Größe, tmp_name und all das ... angegeben. Wenn keine Datei vorhanden ist, wird ein leeres Array angezeigt ... der Code ist jedoch immer noch vorhanden beide Male angezeigt – Chris

8

Achten Sie darauf, Ihre FORM-Element folgende Attribute:

method="POST"

und

enctype="multipart/form-data"

  • Christian
+0

Yep, ich habe das in meiner Form – Chris

0

Haben Sie versucht, Codeig mit Niter's Upload-Klasse. Codeigniter könnte $_FILES zusammen mit den anderen Globals leeren.

versuchen Vielleicht $_FILES an der Spitze der codeigniters index.php Dumping, um sicherzustellen,

+0

Ich benutze die Upload-Klasse ... das nicht die ISset ($ _ FILES) Bit enthält ... das sollte eine einfache PHP-Sache sein – Chris

+0

@Chris - Entschuldigung, dass ich falsch gelesen Frage. Warum versuchst du nicht stattdessen 'leer ($ _ FILES [['mpfile'])' '. – rojoca

+0

Nein ... immer noch nichts – Chris

2

php.ini überprüfen:

file_uploads = "1" 
post_max_size = 50000 
upload_max_file_size = 2M 

tun, um eine phpinfo();

Haftungsausschluss php.ini Die Werte könnten leicht abweichen, aber Sie werden sie sicher finden. die Namen sind richtig, nicht sicher, ob die Werte sind.

+0

file_uploads = auf .... post_max_size = 100Mb .... upload_max_file_size = 100Mb – Chris

0

Hier ist ein weiterer Stich im Dunkeln.Überprüfen Sie den Fehlercode:

if($_FILES['mpfile']['error'] != UPLOAD_ERR_NO_FILE) { 
    echo 'testing'; 
} 
0

Sie müssen auch für eine leere Datei überprüfen:

if (isset($_FILES['userfile']) && $_FILES['userfile']['error'] != 4) 

Sehen Sie diesen Beitrag:

http://codeigniter.com/forums/viewthread/136610/#673652

„Der Upload-Feld wird in $ setzen _FILES auch wenn es leer ist und der Fehler und die Größe auf 4 bzw. 0 gesetzt sind "

bearbeiten hinzuzufügen:

Ich habe noch nie mehrere hochgeladen, aber ich denke, in Ihrem Fall, dass Sie ['mpfile'] vor jedem ['userfile'] im Test

0
if (!empty($_FILES['mpfile']['name'])) { 
    var_dump($_FILES['mpfile']['name']); 
} 
+0

Bitte erläutern Sie Ihre Antwort – Gwenc37

+0

in dem Beispiel erstellt er eine leere Array, das bedeutet, dass isett wahr zurückgibt, verwende ich die Invertierung von leer, um das zu umgehen –

0

Sie definieren ein Array hinzufügen würde:

<input class="file" name="mpfile[]" type="file" size="32" /> 

In PHP wird die Variable $_FILES['mpfile'] auch ein (leeres) Array sein. Wenn Sie jetzt mit isset testen, wird es gesetzt, weil es ein Array ist (und niemals null).

Test mit empty().

Verwandte Themen