Ich versuche einen Datei-Upload in CodeIgniter zu machen, aber wenn ich enctype="multipart form-data" hinzufüge, werden keine Post-Daten durchgehen. Überhaupt nicht einmal die anderen Felder. Wenn ich es jedoch nicht hinzufüge, kann ich die anderen Postdaten erhalten, aber natürlich keine Datei hochladen. Was läuft hier falsch? Hier ist meine Ansicht und Controller:
Anzeigen:
%Vor%Controller enthält nur:
%Vor%Ergebnis ist:
%Vor% Sie können dieses Formularattribut hinzufügen:
enctype="multipart/form-data;charset=utf-8"
Statt:
enctype="multipart/form-data"
Sie können diesen Link sehen.
Tatsächlich werden die mehrteiligen Daten wie image / zip oder einige andere Blob-Daten in das Array $ _FILES und nicht in das Array $ _POST aufgenommen.
Ich empfehle Ihnen, die Upload-Bibliothek zu verwenden.
view: upload_form.php
view: upload_success.php
controller: upload.php
Und das ist alles
Interessant. Der Code, den du gepostet hast, sollte funktionieren. Ich habe ein schnelles Testskript unter Verwendung Ihres Formulars erstellt, und beide Daten $ _FILES und $ _POST kommen gut durch.
Ich habe diese vorherige Frage zu SO gefunden: PHP - Analyse von mehrteiligen Formulardaten
Es klingt wie das gleiche Problem, das Sie haben. Leider wurde für dieses Problem keine wirkliche Antwort gefunden. Ich würde denken, dass dies ein Serverkonfigurationsproblem sein könnte - können Sie den gleichen Code auf einem anderen Server versuchen und sehen, ob er funktioniert?
Das einzige andere bisschen Information, das ich finden kann, war in der Antwort auf diese Frage, $ _ POST-Daten werden leer zurückgegeben, wenn die Header & gt; POST_MAX_SIZE
Wenn Sie versuchen, eine zu große Datei hochzuladen, kann dies dazu führen, dass PHP die $ _POST-Daten ebenfalls wegwirft. Aber wenn Sie versucht haben, Ihr Formular zu senden, ohne eine Datei hochzuladen (aber immer noch "multipart / form-data"), und trotzdem keine $ _POST-Daten durchkommen sehen, trifft das nicht zu.
Ich hatte gerade das gleiche Problem. Ich habe es so gelöst. In application / config / config.php stellst du die base_url ein Bitte beachten Sie, dass diese URL genau die gleiche sein muss wie die, die Sie anrufen Ihre Web-App. Für mich habe ich meine Domain mit www.sdfsd.com angerufen, aber in der Konfigurationsdatei Ich schrieb Ссылка und der POST des Formulars funktionierte nicht. Also habe ich das geändert und jetzt funktioniert alles!
Prost
Überprüfen Sie, ob eine falsche Umleitung in der CI-Schicht möglich ist. Es könnte durch eine falsche URL-Anfrage verursacht werden (zB ein Schrägstrich '/' fehlt am Ende der URL). Umleitungen löschen alle POST-Daten (ich hatte damit zu tun).
Achten Sie also darauf, dass Sie vollständige URLs in der Formularaktion verwenden.
Überprüfen Sie auch Ihre .htaccess- und $config['uri_protocol']
-Konsistenz.
Ich hatte dieses Problem auch. Ich stimme den obigen Antworten nicht zu. Ich denke, das Entscheidende ist, in welchem Stadium Ihres Controllers Sie versuchen, die Postdaten zu bekommen. Vielleicht könnten Sie den relevanten Teil Ihres Controllers veröffentlichen. Ich habe festgestellt, dass sowohl die Post-Daten als auch die Upload-Daten erst nach dem Aufruf von
verfügbar werden %Vor%Offensichtlich verwenden Sie eine if-Anweisung, um nach dem Erfolg zu suchen. Wenn erfolgreich,
%Vor%gibt das Standardarray mit Informationen über die hochgeladene Datei und
zurück %Vor%ist mit dem gefüllt, was Sie im entsprechenden Formularelement eingegeben haben.
Ich hatte ein ähnliches Problem - Es stellt sich heraus, dass POST-Daten leer sind, wenn Sie die maximale Upload-Größe / maximale Post-Größe überschreiten. Diese Antwort behebt mein Problem und erlaubte mir, $ _POST und $ _FORM Daten zu sehen: $ _POST-Daten werden leer zurückgegeben, wenn die Header & gt; POST_MAX_SIZE
Tags und Links php forms upload codeigniter