最近在学习使用org.apache.commons.net.ftp.FTPClient进行上传时在客户端选择要上传的文件后取不到客户端路径,取到的是服务器的路径。下载时也是下载到服务器中而不是下载到客户端,其他的如删除、新建文件夹、重命名等都正常,请问是怎么回事,下面是代码。
在服务器上进行任何操作都是没问题的。 public boolean upload(String filename, String localname) {
boolean flag = false;
try {
boolean flag2 = connectServer();
if (flag2) {
                                    ftpClient.setFileType(FTP.BINARY_FILE_TYPE); 
                                    ftpClient.enterLocalPassiveMode(); 
                                    ftpClient.setFileTransferMode(FTP.STREAM_TRANSFER_MODE); 
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("GBK");
FTPClientConfig conf = new FTPClientConfig(
FTPClientConfig.SYST_NT);
conf.setServerLanguageCode("zh"); // 检查远程文件名是否已存在
String remoteFileName = filename.substring(filename
.lastIndexOf("/") + 1);
FTPFile[] files = ftpClient.listFiles(new String(remoteFileName
.getBytes("GBK"), "iso-8859-1"));
if (files.length == 1) {
System.out.println("远程文件名已存在");
flag = false;
} else { System.out.println(filename + "--" + localname);
// 设置文件类型(二进制)
// ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
File file = new File(filename);

InputStream in = new FileInputStream(file);
ftpClient.changeWorkingDirectory(localname.substring(0, localname.lastIndexOf("\\")));
File file2 = new File("f:/upload/"+localname);
flag = ftpClient.storeFile(file2.getName(), in);
in.close();
}
// out.close();
}
} catch (IOException e) {
// flag = false;
// TODO Auto-generated catch block
// //e.printStackTrace();
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return flag;
}--------------------------------------------------------------------------------------------------------------
public boolean download(String remoteFile, String localFile) {
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
boolean flag = false;
try {
boolean flag2 = connectServer();
if (flag2) {
                                    ftpClient.setFileType(FTP.BINARY_FILE_TYPE); 
                                    ftpClient.enterLocalPassiveMode(); 
                                    ftpClient.setFileTransferMode(FTP.STREAM_TRANSFER_MODE); 

ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("UTF-8");
FTPClientConfig conf = new FTPClientConfig(
FTPClientConfig.SYST_NT);
conf.setServerLanguageCode("zh"); File file_in = new File(localFile);
FileOutputStream fos = new FileOutputStream(file_in);
BufferedOutputStream buffOut = new BufferedOutputStream(fos);  flag = ftpClient.retrieveFile(directory + remoteFile, buffOut);
ftpClient.disconnect();
}
} catch (IOException ex) {
// flag = false;
System.out.println("not download");
System.out.println(ex);
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return flag;
}