gpt4 book ai didi

java - getPageContext().getRequest().getParameterMap() 与多部分形式?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:55:13 27 4
gpt4 key购买 nike

下面是我用来测试的代码:

<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() 在 post 请求期间检索表单和 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 上应用了累积修补程序 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>

关于java - getPageContext().getRequest().getParameterMap() 与多部分形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2194442/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com