想要通过ftp自动上传文件到ftp服务器,一般是通过ftp命令脚本来实现的。通过open/user/put/get/bye等一系列命令,顺序执行即可将传输文件,而不需要人工介入(即命令交互式操作)。在linux上的shell脚本执行没有问题,在笔者的win2000 server版上,使用put命令总是报错,说请指定用PASV或PORT模式。使用quote pasv能正常执行,但再次执行put后,很久没有响应,并最后报“425:Not able to open/establish data connection”的错误。在另外一台winxp系统上,却能够使用put上传文件,百思不得其解。
服务器端是redhat linux,ftp服务器为vsftp,参数设置为支持port模式。google了一下,有一种说法是dos终端下的ftp不支持PASV模式。试了各种配置,都不奏效。后来没有办法,只好用java写了个小程序进行文件上传。
使用sun.net.ftp.FtpClient(rt.jar)包,调用openServer(), login(), cd(), binary(), put()等一系列方法,可以上传文件。为了增强灵活性和通用性,写了一个xml格式的配置文件,基本算是间接地解决了原来的问题。另外,通过log4j,将上传历史记录到日志中。使用几天,程序还比较稳定。 附注:运行需要的包:ojdbc14.jarjsp-api.jardom4j-1.6.1.jarlog4j-1.2.14.jar