java - 使用ftp4j上传文件失败

标签 java linux ftp ftp4j

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

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

它在本地主机上运行良好,但在包含在 Web 服务器上部署的 JSF Web 应用程序中时不起作用。我成功地进行了连接和登录,当代码到达上传命令时,它只是跳过它并且什么都不做。没有抛出异常。

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

这段代码在 Windows 机器上运行,难道在 Linux 上运行的机器有不同的“规则”吗?

最佳答案

您的代码似乎是正确的。尝试找出它抛出的 FTP 错误。有时可能会发生超时,我遇到过!!!

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

/** * 该类用于演示Jakarta Commons Net包的用法 */
公共(public)类 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);  
}      

}

关于java - 使用ftp4j上传文件失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16078060/

相关文章:

java - 在 linux 上从终端运行 jar 文件

python - 超时后恢复 FTP 下载

java - 当其他步骤正常工作时,Cucumber java 会抛出单个未定义的步骤

java - 用Java在平面文件中记录操作

java - 找不到响应正文的消息正文编写器

javascript - 在 FTP 服务器上上传 NodeJS : Error

ios - 如何使用FTP直接从iOS将图像上传到服务器目录

java - 计算机图形学 - JOGL 纹理映射

c++ - Cin循环永不终止

linux - 来自 NIC 的以太网帧