如何将文件类型从Coldfusion代码传输到javascript代码?

时间:2015-02-25 05:47:38

标签: javascript coldfusion

我是ColdFusion的新手,当我在嵌入式js代码中使用文件类型数据时遇到了问题。我从FORM获得了一个上传的文件。下面是表格代码。

        <cfform name='uploadForm' action='#CGI.SCRIPT_NAME#' enctype='multipart/form-data' method='post' onsubmit='loading()'>
            <input type='hidden' name='trigger' value='yes' />
            <input type='hidden' name='file_type' id='file_type' />
            <input type='hidden' name='presentation_id' id='presentation_id' />
            <input type='hidden' name='productionYear' id='productionYear' />
            <div><input type='file' name='fileToUpload' size='45' id="uploadID" onChange="setFile();"></div>

            <div class='loading' id='loading' style='display: none'>
                <img src='buttons/load_bar.gif' />
                <div>The file is uploading. Please do not click anything or make changes to the media form.</div>
            </div>
            <div class='empty' id='empty' style='display: block'>
            </div>
            <div><input type='submit' value='Upload File' class='submit'></div>
        </cfform>

接下来是获取提交文件的函数:

<cfscript>
function getClientFileName(fieldName) {
    var tmpPartsArray = Form.getPartsArray();
    var clientFileName = "";

    if (IsDefined("tmpPartsArray")) {
        for (local.tmpPart in tmpPartsArray) {
            if (local.tmpPart.isFile() AND local.tmpPart.getName() EQ arguments.fieldName) {
                return local.tmpPart;
            }
        }
    }

    return "";
}

</cfscript>

我使用<cfset clientFileName = getClientFileName("fileTOUpload")>来获取文件数据。

然后在我的javascript代码中:

var result = client.media.upload(cb, '#clientFileName#');

这里的第二个参数应该是文件类型。但是上传失败并且错误第二个参数不是文件类型数据。

所以有人可以告诉我该怎么办?提前谢谢。

1 个答案:

答案 0 :(得分:4)

之前评论过,但这是一个例子。要呈现CFML变量,CFML必须位于<cfoutput></cfoutput>块内。因此,在您的情况下,您希望clientFileName的结果在JS中呈现。现在,假设您的JS位于.cfm页面内,它可能如下所示:

<cfoutput>
<script>
   var result = client.media.upload(cb, '#clientFileName#');
</script>
</cfoutput>

或者如果它只是#clientFileName#你需要渲染你可以包装它:

<script>
   var result = client.media.upload(cb, '<cfoutput>#clientFileName#</cfoutput>');
</script>

请记住,只要您需要使用#&#39; s输出数据,就需要在<cfoutput>块内。