coldfusion ftpsclient storefile

时间:2014-06-23 15:36:10

标签: coldfusion ftp ftps

我正在使用ftpsclient进行ftp文件传输,因为它是明确的tls

这里是我正在使用的代码:

<cfscript>
ftpsClient = CreateObject("java","org.apache.commons.net.ftp.FTPSClient").init(JavaCast("boolean",false));

ftpsClient.connect(JavaCast("string","test.hostedftp.com"),21);
connected = ftpsClient.isConnected();

WriteOutput("Is Connected:" &  connected & '<br/>');

reply = ftpsClient.getReplyCode();
WriteOutput("Is reply:" &  reply & '<br/>');

login = ftpsClient.login('test','test');
WriteOutput("Is Logged in:" &  login & '<br/>');

    ftpsClient.enterLocalPassiveMode();
    ftpsClient.changeWorkingDirectory("/test");
    reply = ftpsClient.getReplyCode();
    WriteOutput("Is changeWorkingDirectory:" &  reply & '<br/>');


</cfscript>


<cfset fileStream = CreateObject(
            "java",
            "java.io.FileInputStream"
            ).Init(
                CreateObject(
                    "java",
                    "java.io.File"
                    ).Init(
                        "C:\Users\test\test.txt"
                        )
            ) />
                <cfset storefile = ftpsClient.storeFile("LocalFile.txt", fileStream)>
                <cfset replycode = ftpsClient.getReplyCode()>
                <cfoutput>#replycode#</cfoutput><br>
                <cfset fileStream.close()>
                <cfoutput>#storefile#</cfoutput>

但它不在这里上传文件&#39;输出:

Is Connected:YES
Is reply:234
Is Logged in:YES
Is changeWorkingDirectory:250
500
NO 

这意味着在storefie回复码出现后,&#34; 500&#34;。

如果有人可以提供帮助,我不知道代码中的错误。

提前致谢!

1 个答案:

答案 0 :(得分:1)

尝试执行PROT命令。您可以将它放在enterLocalPassiveMode()行

之后
ftpsClient.execPROT("P");

我能够以这种方式在我的本地测试中使用它。

PROT处理数据保护级别。如果没有提供,则将其作为清除发送。 P代表私人。我猜测它不是安全地传输文件。

getReplyString()显示什么?是否有关于数据通道不安全的说法?