ниже код, который я использую для тестирования этого:
<cfif structkeyexists(form, "submitted")>
<cfdump var="#getPageContext().getRequest().getParameterMap()#">
</cfif>
<cfoutput>
<form method="post" action="#cgi.script_name#?firstname=tony">
<input type="text" size="50" name="page[contents][][content]">
<input type="text" size="50" name="page[contents][][content]">
<input type="hidden" name="submitted" value="1">
<input type="submit">
</form>
</cfoutput>
то, что мы делаем, использует getPageContext () .getRequest () .getParameterMap () для получения хеша формы и объемов URL во время запроса сообщения. теперь эта работа все великолепные, пока Вы не устанавливаете enctype атрибут формы к "multipart/form-data " как так:
<cfif structkeyexists(form, "submitted")>
<cfdump var="#getPageContext().getRequest().getParameterMap()#">
</cfif>
<cfoutput>
<form method="post" action="#cgi.script_name#?firstname=tony" enctype="multipart/form-data">
<input type="text" size="50" name="page[contents][][content]">
<input type="text" size="50" name="page[contents][][content]">
<input type="hidden" name="submitted" value="1">
<input type="submit">
</form>
</cfoutput>
то, что происходит в этой точке, - то, что ни одно из значения поля формы не возвращено в хеше, возвращенном из getPageContext () .getRequest () .getParameterMap ().
кто-либо знает, где или как мы можем получить эти данные или обходное решение?
целая причина мы используем getPageContext () .getRequest () .getParameterMap () состоит в том, потому что это возвращает массив, как значение переменной вместо разграниченного списка запятой как использование объема формы делает.
ОБНОВЛЕНИЕ: это находится на 8.0.1 с cumlative текущими исправлениями 4 примененных.
ОБНОВЛЕНИЕ: причина Вы не можете использовать listToArray, состоит в том, потому что говорят, что у Вас есть два поля, названные firstname, и пользователь входят в значения для обоих полей (1 и 2). то, что сделает CF, возвратиться, ключ в структуре формы, названной firstname с запятой, разграничил список для двух значений (1,2). здорово, но скажите, что пользователь входит в значения для поля, которые содержат запятые как 1,2,3,4 для первого поля и 5,6,7,8 для второго поля. значение в структуре формы для firstname будет 1,2,3,4,5,6,7,8. это не корректно. теперь с тех пор getParameterMap () возвращает массив для значения, у меня было бы два элемента как так: ["1,2,3,4", "5,6,7,8"].
ОБНОВЛЕНИЕ: Испытанное наблюдение, что getHttpRequestData () .content возвратил бы на Leigh, предлагает. Это, кажется, пустой двоичный файл.
ОБНОВЛЕНИЕ: Благодарит Вас Leigh за понимание этого и не используя getPageContext полностью. прием использовал getPartsArray () метод на объеме формы. Я даже не знал, что это существовало!
Сохраните идеи, прибывающие!
(Хорошо .. возьмите два) Кажется, это работает с CF9. На данный момент я не могу протестировать это с CF8. Можете ли вы его покрутить?
<cfif structkeyexists(form, "submitted")>
<!--- if this is a multipart request ...--->
<cfset variables.parts = form.getPartsArray()>
<cfif structKeyExists(variables, "parts")>
<cfoutput>
<cfloop array="#variables.parts#" index="p">
<cfif p.isParam()>
isParam() = #p.isParam()# <br />
getName() = #p.getName()# <br />
stringValue() = #p.getStringValue()# <hr />
</cfif>
</cfloop>
</cfoutput>
</cfif>
</cfif>