繁体   English   中英

无法使用ftp4j上传文件

[英]Fail to upload file using ftp4j

我正在使用ftp4j作为FTP客户端。

FTPClient client = new FTPClient();
client.connect("86.22.11.178");
client.login("usr", "pwd");
client.changeDirectory("/dir");
client.upload(file);

它在localhost上可以正常工作,但是当包含在Web服务器上部署的JSF Web应用程序中时,它将无法正常工作。 我成功完成了连接和登录,当代码到达了上载命令时,它只是跳过了该命令而没有执行任何操作。 没有异常被抛出。

与FTP服务器完全连接,这不是问题。 我还对文件设置了chmod 777权限,它们属于同一所有者。

该代码在Windows机器上运行,可能是在Linux上运行的机器具有不同的“规则”吗?

您的代码似乎是正确的。 尝试找出引发的FTP错误。 有时可能会发生超时,这是我面临的!!!

导入org.apache.commons.net.ftp。 ;
导入java.io。 ;

/ ** *此类用于演示Jakarta Commons Net软件包的用法* /
公共类TestFTP {

/** Creates a new instance of TestFTP */  
public TestFTP() {  
}  

/** 
 * main - Unit test program 
 * @param args Command line arguments 
 * 
 */  
public static void main(String args[]) {  
    try {  
        String ftpHost = "157.227.38.131";  
        String ftpUserName = "firebird";  
        String ftpPassword = "tcs@12345";  
        String ftpRemoteDirectory = "/etc/vlp/uploaded_files";  
        String fileToTransmit = "c:\\temp\\VLPDYN18022010174439.an";  

        //Create a Jakarta Commons Net FTP Client object  
        FTPClient ftp = new FTPClient();  

        //A datatype to store responses from the FTP server  
        int reply;  

        //  
        //Connect to the server  
        //  
        ftp.connect(ftpHost);  

        //  
        // After connection attempt, you should check the reply code to verify success.  
        //  
        reply = ftp.getReplyCode();      
        if(!FTPReply.isPositiveCompletion(reply)) {  
            try {  
                ftp.disconnect();  
            } catch (Exception e) {  
                System.err.println("Unable to disconnect from FTP server " +  
                                   "after server refused connection. "+e.toString());  
            }  
            throw new Exception ("FTP server refused connection.");  
        }                
        System.out.println("Connected to " + ftpHost + ". "+ftp.getReplyString());  

        //  
        //Try to login  
        //  
        if (!ftp.login(ftpUserName, ftpPassword)) {  
            throw new Exception ("Unable to login to FTP server " +  
                                 "using username "+ftpUserName+" " +  
                                 "and password "+ftpPassword);  
        }  

        System.out.println(ftp.getReplyString());  
        System.out.println("Remote system is " + ftp.getSystemName());  

        //  
        //Set our file transfer mode to either ASCII or Binary  
        //  
        //ftp.setFileType(FTP.ASCII_FILE_TYPE);  
        ftp.setFileType(FTP.BINARY_FILE_TYPE);  

        //  
        //Change the remote directory  
        //  
        if (ftpRemoteDirectory != null && ftpRemoteDirectory.trim().length() > 0) {  
            System.out.println("Changing to FTP remote dir: " + ftpRemoteDirectory);  
            ftp.changeWorkingDirectory(ftpRemoteDirectory);  
            reply = ftp.getReplyCode();  

            if(!FTPReply.isPositiveCompletion(reply)) {  
                throw new Exception ("Unable to change working directory " +  
                                     "to:"+ftpRemoteDirectory);  
            }  
        }  

        //  
        //Get the file that we will transfer and send it.  
        //  
        File f = new File(fileToTransmit);  
        System.out.println("Storing file as remote filename: " + f.getName());  
        boolean retValue=true;  
       try{   
        retValue = ftp.storeFile(f.getName(), new FileInputStream(f));  
       }catch(Exception e){e.printStackTrace();}  
        if (!retValue) {  
          throw new Exception ("Storing of remote file failed. ftp.storeFile() returned false.");  
        }  

        //Disconnect from the FTP server  
        //  
        try {  
            //ftp.logout();  
            ftp.disconnect();  
        } catch (Exception exc) {  
            System.err.println("Unable to disconnect from FTP server. " + exc.toString());  
        }  

    } catch (Exception e) {  
        System.err.println("Error: "+e.toString());  
    }  

    System.out.println("Process Complete.");  
    System.exit(0);  
}      

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM