ローカルの一時ファイルへのftp「get」を実行するcfcへの呼び出しをプロキシしました。次に、ファイルを読み取り、ファイルの内容を文字列として返すことになっています。コードが機能することはわかっています。cfcから通常のcfmファイルにコードをプルすると、期待どおりの動作をします。ただし、私のプロキシcallBackHandler
では、cfcの結果はnullのように見えます。プロキシコードは次のとおりです。
<cfajaxproxy cfc="ftpfunc" jsclassname="jsobj" />
function getFTP() {
...
var instance = new jsobj();
instance.setCallbackHandler(ftpSuccess);
instance.setErrorHandler(ftpError);
instance.setReturnFormat('plain');
instance.getJCL(lpar,remoteFile,userName,password);
}
..次に、callbackHandler。cfcから文字列が返されます。
function ftpSuccess(ftpReturn)
{
// error thrown right here: "ftpReturn is Null"
if (ftpReturn.length==0)
{ alert("Your FTP Get returned a blank file"); }
}
使用する特定の構文はありますか?たとえば、戻りタイプが構造体またはクエリの場合、のようなものを使用する必要がありますftpReturn.DATA
。ストレートストリングはどうですか?
助けてくれてありがとう
編集:これはcfcです
<cffunction name="getJCL" output="false" access="remote" securejson="true">
<cfargument name="lpar" type="string" required="yes">
<cfargument name="remoteFile" type="string" required="yes">
<cfargument name="userName" type="string" required="yes">
<cfargument name="password" type="string" required="yes">
<cfset var ftpReturn = "">
<cfftp action="open"
connection="getConnection"
password="#arguments.password#"
secure="yes"
server="#arguments.lpar#"
stopOnError="no"
timeout="30"
username="#arguments.username#">
<cfset tempFile="D:\myDir\#RandRange(10000000,99999999)#.tmp">
<cfftp action="getFile"
connection="getConnection"
localFile="#tempFile#"
remoteFile="#arguments.remoteFile#"
transferMode="auto">
<cffile action = "read" file = "#tempFile#" variable = "Message">
<cfset ftpReturn = Message>
<cfreturn ftpReturn>
</cffunction>