COLDFUSION如何将文本文件存储到会话中? FileNotFoundException异常

时间:2014-12-18 02:58:54

标签: file session exception coldfusion

我还是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>

那么我怎么能把它放进会话?另一个问题是显示图像或文档的结果。我可以使用哪些命令?

1 个答案:

答案 0 :(得分:3)

目标需要是服务器硬盘(或RAM驱动器)上的实际文件路径。看来session.checkout.input.docattach的值当前是空字符串而不是路径。一旦你上传了文件,就会有一个cffile变量,其中包含有关新上传文件路径的信息,然后你可以使用fileRead()读取它,并根据自己的判断将内容放入变量中。

查看cfile action = upload的文档 https://wikidocs.adobe.com/wiki/pages/viewpage.action?pageId=87505342

此外,请勿将文件上传到可通过网络访问的目录,因为这可能会产生安全漏洞。

相关问题