如何使用jsch sftp从Android上传?

时间:2018-01-18 09:34:31

标签: android file-upload sftp jsch

我尝试使用JSCH SFTP从Android手机的DCIM文件夹上传图片。这是代码的主要部分:

channelSftp2.put("/storage/emulated/0/DCIM/Camera/IMG_20180118_122224.jpg","/home/pi/IMG_20180118_122224.jpg");

但不幸的是它不起作用。 logcat没有给出任何具体错误。我将/storage/emulated/0/DCIM/Camera/IMG_20180118_122224.jpg更改为/sdcard/DCIM/Camera/IMG_20180118_122224.jpg,但没有任何更改。

我在Android Studio 2.2.2中编写代码,构建SDK为24.我已将READ_EXTERNAL_STORAGE权限添加到AndroidManifest.xml文件。

以下是完整的代码段:

        new AsyncTask<Integer, Void, Void>(){   

            @Override
            protected Void doInBackground(Integer... params) {

                String SFTPHOST2 = "192.168.0.1";
                int SFTPPORT2 = 22;
                String SFTPUSER2 = "pi";
                String SFTPPASS2 = "raspberry";
                String SFTPWORKINGDIR2 = "/home/pi/";

                Session session2 = null;
                Channel channel2 = null;
                ChannelSftp channelSftp2 = null;

                try {
                    JSch jsch2 = new JSch();
                    session2 = jsch2.getSession(SFTPUSER2, SFTPHOST2, SFTPPORT2);
                    session2.setPassword(SFTPPASS2);
                    session2.setConfig("StrictHostKeyChecking", "no");
                    session2.setTimeout(10000);
                    while (!session2.isConnected())
                        session2.connect();

                    channel2 = session2.openChannel("sftp");
                    while (!channel2.isConnected())
                        channel2.connect();
                    channelSftp2 = (ChannelSftp) channel2;
                    channelSftp2.cd(SFTPWORKINGDIR2);

                    channelSftp2.put("/storage/emulated/0/DCIM/Camera/IMG_20180118_122224.jpg","/home/pi/IMG_20180118_122224.jpg");

                } catch (Exception ex) {
                    ex.printStackTrace();
                    Toast.makeText(getApplicationContext(), "Error Connecting", Toast.LENGTH_LONG).show();
                }
                return null;
            }

        }.execute(1);

那么,问题是什么!如何使用JSCH SFTP将文件从Android手机正确上传到远程服务器?

0 个答案:

没有答案