以下代码用于上传文件和文件夹到服务器(SFTP)。我努力保持文件夹结构完整,即C:\ temp \ test \ file.txt成为/ home/www/javauploads/temp/test/file.txt在服务器上。但是当我运行它的文件都上传,但文件夹和文件只是倾倒在服务器上没有任何结构,文件名像这样出现(C3NXXV〜9)有没有办法上传文件和文件夹,同时保持结构和文件名完好无损,谢谢。 `Java applet上传文件和文件夹,同时保持目录结构完好
private static void processDir(File dir) throws JSchException, SftpException {
String SFTPHOST = "*****.com";
int SFTPPORT = ***;
String SFTPUSER = "****";
String SFTPPASS = "*****";
String SFTPWORKINGDIR = "/home/www/javauploads/";`Session session = null;
Channel channel = null;
ChannelSftp channelSftp = null;
JSch jsch = new JSch();
session = jsch.getSession(SFTPUSER,SFTPHOST,SFTPPORT);
session.setPassword(SFTPPASS);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp)channel;
channelSftp.cd(SFTPWORKINGDIR);
if (dir.isDirectory()){
channelSftp.mkdir(dir.toString());
System.out.println("[Directory] : " + dir);
}else{
channelSftp.put(dir.toString());
System.out.println("[File] : " + dir);
}
channelSftp.exit();
session.disconnect();
}
private static void traverse(File dir) throws JSchException, SftpException {
processDir(dir);
if (dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++) {
traverse(new File(dir, children[i]));
}
}
}`
这个问题仍然存在吗?如果是这样,它可能有助于了解客户端和服务器系统以及SSH服务器。如果没有,请发布您找到的解决方案。 –