我正在使用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;。
如果有人可以提供帮助,我不知道代码中的错误。
提前致谢!
答案 0 :(得分:1)
尝试执行PROT命令。您可以将它放在enterLocalPassiveMode()行
之后ftpsClient.execPROT("P");
我能够以这种方式在我的本地测试中使用它。
PROT处理数据保护级别。如果没有提供,则将其作为清除发送。 P代表私人。我猜测它不是安全地传输文件。
getReplyString()显示什么?是否有关于数据通道不安全的说法?