【问题标题】:How to include ColdFusion code but not have it processed?如何包含 ColdFusion 代码但未对其进行处理?
【发布时间】:2012-07-02 17:05:33
【问题描述】:

我正在使用 ColdFusion 8。

我正在创建一些代码来创建一个文件夹并插入一个文件。该文件稍后将由人工进行调整。

我这样创建目录:

<cfdirectory action="create" directory="#LOCAL.PathToCreate#">

接下来,我需要创建一个名为 index.cfm 的文件。现在,需要进入 index.cfm 文件的内容在 Test-21-index.txt 中。我创建这样的内容:

<cfsavecontent variable="LOCAL.MyContent">
    <cfinclude template="Test-21-index.txt">
</cfsavecontent>
<cffile action="write" file="#NewTreatmentPath##LOCAL.NewFile#" output="#LOCAL.MyContent#" nameconflict="overwrite">

Test-21-index.txt 的内容中包含 ColdFusion 代码。我遇到的问题是当我包含文件 Test-21-index.txt 时,ColdFusion 代码正在运行。

如何将代码创建为在文件创建期间未运行的文本文件?

更新 ~ 有这么多工具可用于实施我的解决方案,我只需要正确的组合。我没有读取文件,使用 cfsavecontent,然后写入文件,而是复制了文件。啊。这太容易了。

<cffile action="copy" source="#CurrentDirectory#\#LOCAL.FileToInclude#" destination="#NewTreatmentPath#\#LOCAL.NewFile#">

【问题讨论】:

    标签: coldfusion coldfusion-8 cffile


    【解决方案1】:

    您可以使用cffile读取文件,然后在cfsavecontent标签中输出其内容,而不是使用cfinclude

    <cffile action="read" file="test-21-index.txt" variable="fileContent" />
    
    <cfsavecontent variable="LOCAL.MyContent">
       <cfoutput>#filecontent#</cfoutput>
    </cfsavecontent>
    
    <!--- or even <cfset LOCAL.MyContent = fileContent /> --->
    
    <cffile action="write" file="#NewTreatmentPath##LOCAL.NewFile#" output="#LOCAL.MyContent#" nameconflict="overwrite">
    

    代码未经测试,但我认为它应该可以工作。不过,我相信您需要找到通往test-21-index.txt 的路径,但要稍有不同。

    【讨论】:

    • 我明白了。谢谢,我试试看。
    • 既然已经有#filecontent#,为什么还需要cfsavecontent?这是多余的。
    • @NathanStrutz 如果这就是需要进入输出文件的全部内容,您不需要。我不确定 Evik 的代码是否是一个简化的示例(即需要更多内容才能进入输出文件),所以我尽可能保持原样。
    • 我还要补充一点,如果您所做的只是读取文件的内容并将其写入另一个文件,那么您可以只使用 CFFILE 的“复制”操作并绕过读取/将内容全部写下来,减少到一行,也节省了一些处理时间。
    • 感谢您的帮助。是的,使用 CFFILE 和复制正是我所需要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    相关资源
    最近更新 更多