我尝试使用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手机正确上传到远程服务器?