我还是ColdFusion的新手,在将cffile上传到会话和从另一个页面读取时遇到了一些问题。基本上,我的主要目标是将文本文档正确上传到会话中,最后将其显示在另一个cfm页面上。
Form.cfm:
<cfif not structKeyExists(session.checkout, "input")>
<cfset session.checkout.input = {textname="", textemail="", docattach=""}>
</cfif>
<cfparam name="form.textname" default="#session.checkout.input.textname#">
<cfparam name="form.textemail" default="#session.checkout.input.textemail#">
<cfparam name="form.docattach" default="#session.checkout.input.docattach#">
<cfif structKeyExists(form, "Submit")>
<cfset form.textname = trim(htmlEditFormat(form.textname))>
<cfset form.textemail = trim(htmlEditFormat(form.textemail))>
<cffile action="upload" fileField="docattach" destination="#session.checkout.input.docattach#" nameConflict="overwrite">
<cfset session.checkout.input = {textname=form.textname, textemail=form.textemail, docattach=<--How do I store cffile upload result here?-->}>
<cflocation url="formcomplete.cfm" addToken="false">
</cfif>
<!DOCTYPE html>
<html>
<head>
FormComplete.cfm
<cfif not structKeyExists(session, "checkout")>
<cflocation url="form.cfm" addToken="false">
</cfif>
<cffile action="read" file="#session.checkout.input.docattach#" variable="attachment">
<!DOCTYPE html>
<html>
<head>
...
</head>
<body>
<cfoutput>
Name: #session.checkout.input.textname#</br>
Email: #session.checkout.input.textemail#</br>
Business Rationale: #attachment# </br>
</cfoutput>
</body>
</html>
那么我怎么能把它放进会话?另一个问题是显示图像或文档的结果。我可以使用哪些命令?
答案 0 :(得分:3)
目标需要是服务器硬盘(或RAM驱动器)上的实际文件路径。看来session.checkout.input.docattach的值当前是空字符串而不是路径。一旦你上传了文件,就会有一个cffile变量,其中包含有关新上传文件路径的信息,然后你可以使用fileRead()读取它,并根据自己的判断将内容放入变量中。
查看cfile action = upload的文档 https://wikidocs.adobe.com/wiki/pages/viewpage.action?pageId=87505342
此外,请勿将文件上传到可通过网络访问的目录,因为这可能会产生安全漏洞。