getPageContext (). getRequest (). getParameterMap () mit mehrteiligen Formularen?

8

unten ist der Code, den ich verwende, um dies zu testen:

%Vor%

Was wir tun, ist getPageContext (). getRequest (). getParameterMap (), um einen Hash des Formulars und der URL-Bereiche während einer Post-Anfrage abzurufen. Jetzt funktioniert das alles gut und schön, bis Sie das Attribut enctype des Formulars wie folgt auf "multipart / form-data" setzen:

%Vor%

Was zu diesem Zeitpunkt passiert, ist, dass keiner der Formularfeldwerte in dem von getPageContext () zurückgegebenen Hash zurückgegeben wird. getRequest (). getParameterMap ().

Weiß jemand, wo oder wie wir diese Daten oder eine Problemumgehung erhalten können?

Der Grund, warum wir getPageContext () verwenden, ist getRequest (). getParameterMap () ist, weil es ein Array als den Wert der Variablen anstelle einer durch Kommas getrennten Liste zurückgibt, wie es der Formularbereich tut.

UPDATE: Dies ist auf 8.0.1 mit angewendetem kumulativen Hotfix 4.

UPDATE: Der Grund, warum Sie listToArray nicht verwenden können, ist, dass Sie zwei Felder mit dem Namen Vorname haben und der Benutzer Werte für beide Felder (1 und 2) eingibt. . Was CF tun wird, ist einen Schlüssel in der Form struct namens Vorname mit einer Komma Delimeted Liste für die zwei Werte (1,2) zurückzugeben. Das ist großartig, aber der Benutzer gibt Werte für das Feld ein, das Kommas enthält wie 1,2,3,4 für das erste Feld und 5,6,7,8 für das zweite Feld. Der Wert in der Form struct für Vorname lautet 1,2,3,4,5,6,7,8 . das ist nicht korrekt . Jetzt, da getParameterMap () ein Array für den Wert zurückgibt, hätte ich zwei Elemente wie folgt: ["1,2,3,4", "5,6,7,8" ] .

UPDATE: Versucht zu sehen, was getHttpRequestData (). content nach Leighs Vorschlag zurückgibt. Es scheint eine leere Binärdatei zu sein.

UPDATE: Danke, Leigh, dass Sie das herausgefunden haben und getPageContext nicht vollständig verwenden. Der Trick bestand darin, die Methode getPartsArray () für den Formularbereich zu verwenden. Ich wusste nicht einmal, dass das existiert!

Bitte halten Sie die Ideen bereit!

    
rip747 03.02.2010, 18:34
quelle

1 Antwort

2

(Okay, nimm zwei) Das scheint mit CF9 zu funktionieren. Ich kann es momentan nicht mit CF8 testen. Kannst du es drehen?

%Vor%     
Leigh 04.02.2010, 19:38
quelle