我们将在不久的将来从客户的ftps服务器转移到我们自己的ftps服务器。我只是尝试了现有代码,但它无法正常使用我们的新服务器。
登录似乎有效,我可以使用printWorkingDirectory()
并查看我在服务器上的正确目录中。但我们无法上传文件或列出工作目录中的文件。 listFiles()
和printWorkingDirectory()
返回空字符串或空数组,但文件位于工作目录中。
IIRC我们在旧的FTPS服务器上遇到了类似的问题,可以通过进入被动模式来修复它。但enterLocalPassiveMode()
和enterLocalActiveMode()
都不起作用。完全离开那条线也没有帮助
服务器本身在与FileZilla连接时工作正常,所以我猜问题在于我们的代码,但由于我们没有收到错误消息,因此很难猜出问题是什么。
这是在旧服务器上运行的版本(在Lucee 5.1.2.24上使用cfscript):
var oFTPSclient = CreateObject("java", "org.apache.commons.net.ftp.FTPSClient").init("ssl",false);
oFTPSclient.connect( 'our.ftp.server');
oFTPSclient.enterLocalPassiveMode();
oFTPSclient.login( 'user', 'password');
var qFiles = DirectoryList(
path = '/path/to/files/to/upload',
filter = "*.jpg",
listInfo = "query"
);
// Upload files
for( var oFile IN qFiles) {
// Create path to source file
var sSourceFilePath = ExpandPath( oFile.directory & '/' & oFile.name);
// Create java file object
var oJavaFile = CreateObject( "java", "java.io.File").init( sSourceFilePath);
// open input stream from file
var oFileInputStream = CreateObject("java", "java.io.FileInputStream").init( oJavaFile);
// Set file transfer to binary
oFTPSclient.setFileType( oFTPSclient.BINARY_FILE_TYPE);
// store current file to server
oFTPSclient.storeFile( oFile.name, oFileInputStream);
oFileInputStream.close();
}
oFTPSclient.disconnect();
当我们尝试上传文件时,循环结束,但是快速的方式(我们的连接在这里相当慢,所以不应该立即上传几兆字节)和最后的disconnect()
调用时间。
任何想法从哪里开始调试?或者我最初的假设是代码错误,这是服务器的问题,我们应该考虑一下?
更新
由于篇幅较长,我在此发布了FileZilla的详细日志:http://pastebin.com/b9TfR7cg