我是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#');
这里的第二个参数应该是文件类型。但是上传失败并且错误第二个参数不是文件类型数据。
所以有人可以告诉我该怎么办?提前谢谢。
答案 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>
块内。