java FTP上传创建空文件

时间:2012-08-19 11:40:48

标签: java ftp

当我尝试使用apache commons ftpClient和此代码上传一个简单的文本文件时:

imports*

public class ftpUpload {

public static void main(String[] args) {

    FTPClient ftp = new FTPClient();
    int reply;

    // connect
    try {

        ftp.connect(serverAdd);
        ftp.login(username,password);
        reply = ftp.getReplyCode();

        if(FTPReply.isPositiveCompletion(reply)){
            System.out.println("Connected Success..");

            // upload file
            try {
                String fileDir = "testfile.txt";
                FileInputStream in = null;       
                in = new FileInputStream(fileDir);     
                ftp.storeFile(fileDir,in);
                System.out.println("File upload complete..");
            }catch(IOException e){
                System.out.println(e);
            }

            ftp.disconnect();
            System.out.println("Disconnected..");

        }else {
            System.out.println("Connection Failed..");
            ftp.disconnect();
        }   

    } catch (SocketException ex) {
        ex.printStackTrace();
    } catch (IOException ex) {
        ex.printStackTrace();
    }
  }
}

文件在FTP服务器的根目录中创建,但它是空的。怎么了?上传PDF文件时,我已经尝试将ftp模式更改为BINARY。但文件大小也是0。

ftp.setFileType(FTP.BINARY_FILE_TYPE);

我也只想上传一堆txt文件,所以默认的ascii模式应该没问题吧?

3 个答案:

答案 0 :(得分:2)

好吧,好像我的防火墙出了问题。当我停用防火墙时,文件会毫无问题地写入ftp。

答案 1 :(得分:2)

我遇到了同样的问题。创建的文件大小为0 KB。将模式设置为被动后,我的文件成功传输到FTP服务器。事实上,在FTP服务器上传文件时我们需要注意三件事。

1)。将文件类型设置为BINARY

objFtpClient.setFileType(FTP.BINARY_FILE_TYPE);

2)。将文件传输模式设置为BINARY

objFtpClient.setFileTransferMode(FTP.BINARY_FILE_TYPE);

3)。将Mode设置为Passive(我不知道它在内部做了什么。但它有效......!)

objFtpClient.enterLocalPassiveMode();

答案 2 :(得分:0)

您可能还必须将FileTranserMode设置为二进制文件:

ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.setFileTransferMode(FTP.BINARY_FILE_TYPE);