有没有人有Coldfusion的GetHttpRequestData()如何工作的例子?我希望使用此函数来保存AJAX上传脚本中的数据:http://valums.com/ajax-upload/
该脚本适用于FireFox,但不适用于Safari,Chrome等...
想法?
答案 0 :(得分:1)
你得到什么错误?
也许这些链接会有所帮助:
答案 1 :(得分:1)
您可能还想阅读有关该脚本的recent thread。正如valums建议的那样,您应该能够从getHttpRequestData()。content(需要时)中提取二进制数据。
在我的非常限制测试中,它似乎与IE8 / FF / Chrome / Opera一样正常。但是,我没有运气Safari(Windows)。似乎请求数据被破坏了(或者可能被CF误解了?)。因此CF报告的最终内容类型标头不正确,导致http 500错误。当然,我没有对此进行过广泛的测试。
这是我快速而肮脏的测试脚本(设计跛脚......)
<cfset uploadError = "" />
<cfif structKeyExists(FORM, "qqFile")>
<!--- upload as normal --->
<cffile action="upload" filefield="qqFile" destination="c:/temp" />
<cfelseif structKeyExists(URL, "qqFile")>
<!--- save raw content. DON'T do this on a prod server! --->
<!--- add security checks, etc... --->
<cfset FileWrite( "c:/temp/"& url.qqFile, getHttpRequestData().content) />
<cfelse>
<!--- something is missing ...--->
<cfset uploadError = "no file detected" />
</cfif>
<!--- return status old fashioned way (for compatibility) --->
<cfif not len(uploadError)>
{"success": true}
<cfelse>
<cfoutput>{error": "#uploadError#"}</cfoutput>
</cfif>
答案 2 :(得分:0)
您希望了解如何使用cffile with action =“upload”上传文件:http://cfdocs.org/cffile
答案 3 :(得分:0)
GetHttpRequestData()用于解码SOAP,XML-RPC和一些更复杂的REST-ful协议等协议。 HTTP文件上载通常使用multipart / form-data MIME类型作为POST完成。查看http://www.cfquickdocs.com/it并不表示GetHttpRequestData()对多部分数据有任何特殊支持,这意味着您必须自己拆分和解码部件。不是我的乐趣,如果你只是进行文件上传,那就完全没必要了。
&lt; cffile action =“upload”&gt;或&lt; cffile action =“uploadAll”&gt; (CF9的新功能)应该足以处理文件上传,即使是通过AJAX上传脚本完成的也是如此。