【问题标题】:Upload directory to FTP ( Android )上传目录到 FTP (Android)
【发布时间】:2017-05-22 21:11:47
【问题描述】:

我想上传目录到我的 FTP 服务器。

这是我用来上传“单个文件”到我的 ftp 服务器的代码,我想知道是否有什么东西可以帮助我上传这个文件夹“mnt/sdcard/”中的所有图片“.jpg” DCIM/相机”到我的 FTP。

public static final String TAG = "Contacts";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Thread t = new Thread(new Runnable(){
        @Override
        public void run(){
            jetzt();
        }
    });
    t.start();
    Log.i(TAG, "thread started");

}

public void jetzt(){
    FTPClient ftpClient = new FTPClient();
    try {
        ftpClient.connect("HOST SERVER IP");

        ftpClient.setSoTimeout(10000);
        ftpClient.enterLocalPassiveMode();
        if(ftpClient.login(" LOGIN ", " PASSWORD "))
        {
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
            ftpClient.setFileTransferMode(FTP.BINARY_FILE_TYPE);
            File sFile=new File("mnt/sdcard/DCIM/Camera/mypicture.jpg");
            FileInputStream fs= new FileInputStream(sFile);
            String fileName = sFile.getName();
            Boolean result = ftpClient.storeFile(fileName, fs);
            fs.close();
            Log.i(TAG, "sent");
            String has = "";
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}

【问题讨论】:

    标签: android eclipse ftp apache-commons-net


    【解决方案1】:

    FTPClient class没有上传整个目录的功能。

    你必须:

    【讨论】:

    • 感谢您的回答马丁。你能修改我的代码吗,因为我的java级别很低。
    • 查看其他答案
    【解决方案2】:

    你可以使用这个修改后的函数:

    public void jetzt() {
        FTPClient ftpClient = new FTPClient();
        try {
            ftpClient.connect("HOST SERVER IP");
    
            ftpClient.setSoTimeout(10000);
            ftpClient.enterLocalPassiveMode();
            if (ftpClient.login(" LOGIN ", " PASSWORD ")) {
                ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
                ftpClient.setFileTransferMode(FTP.BINARY_FILE_TYPE);
    
                final File folder = new File("mnt/sdcard/DCIM/Camera");
    
                for (final File fileEntry : folder.listFiles()) {
                    try {
                        FileInputStream fs = new FileInputStream(fileEntry);
                        if (!fileEntry.isDirectory()) {
                            String fileName = fileEntry.getName();
                            ftpClient.storeFile(fileName, fs);
                            fs.close();
                            Log.i(TAG, "sent");
                        }
                    } catch (Exception e) {
                        Log.i(TAG, "error uploading");
                    }
                }
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    

    【讨论】: