日期:2014-05-20  浏览次数:21035 次

FTPClient上传后,文件内容为空的问题
程序在本机或者很多客户没有问题,但是在其中一个客户那里,FTP上传以后,只有文件名,但是文件内容为空。我看了操作权限,对于服务器上确实有上传和修改的权限,并且在IE里面打开FTP服务器,上传什么的都没有问题。
用的是apache的FTPclient。。。。org.apache.commons.net.ftp.FTPClient
FTP上传代码如下:
public static boolean uploadFile(String url,int port,String username, String password, String path, String filename, InputStream input,int id) {  
    boolean success = false;  
    FTPClient ftp = new FTPClient();
    SystemStaticValue.xtzt.setZ_zs(SystemStaticValue.xtzt.getZ_zs()+1);
    try {  
        int reply;
        ftp.setConnectTimeout(1000);
        ftp.connect(url, port);
        success = ftp.login(username, password);
        if(!success){
         SystemStaticValue.FTP_boolean.put(id, false);
         return success;
        }
        reply = ftp.getReplyCode();  
        if (!FTPReply.isPositiveCompletion(reply)) {  
         SystemStaticValue.FTP_boolean.put(id, false);
            ftp.disconnect();  
            return success;  
        }
        ftp.changeWorkingDirectory(path);  
        ftp.storeFile(filename, input);           
        input.close();  
        ftp.logout();  
        SystemStaticValue.xtzt.setZ_zc(SystemStaticValue.xtzt.getZ_zc()+1);
        success = true;  
        SystemStaticValue.FTP_boolean.put(id, true);
    } catch (IOException e) {
     e.printStackTrace();
     Log.error_log.info(e.getMessage());
     SystemStaticValue.FTP_boolean.put(id, false);
     return false;
    } finally {  
        if (ftp.isConnected()) {  
            try {  
                ftp.disconnect();  
            } catch (IOException ioe) {  
            }  
        }  
    }  
    return success;  
}
后来有想过可能是FTP的主动被动模式导致,但是我用server-u自己挂了个FTP服务器,设置了它的主被动,结果是如果模式不对,那么文件是彻底上传不上去,不存在只上传了文件名,不上传文件内容的情况。。。

求教各位大神,这种情况,可能是FTP服务器的哪个设置导致的?我的代码应该做些什么修改?

------解决方案--------------------
哦,那我就接分....