当使用Java FTPClient上传时,File会获得本地源文件的完整路径作为其名称



所以我有一个基本的GUI应用程序,其中有一个将图像文件上传到ftp服务器的选项。一切都很好,除了一件事:文件在上传过程中被重命名。文件的新名称将是包含该文件的目录的完整路径。

因此,在我的情况下,我在桌面上有一个图像:C:UsersBobDesktopimage.png。当我在JfileChooser中选择文件时,名称仍然只是image.png。但当我点击上传到FTP服务器时,文件将被重命名为C:UsersBobDesktopimage.png。因此,如果我想下载该文件,我必须使用以下路径:/home/user/users/xy/images/C:UsersBobDesktopimage.png才能下载。我知道是什么导致了这个问题。我使用FTPClient.putFileToPath(file,path)上传文件,它运行良好,文件将被上传。我试图用totalcommander将一个文件从我的机器复制到ftp服务器,但这个问题从未发生过。我提供了一些代码片段,它完成了上传工作。

uploadmenu.getUploadBtn().addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(!uploadMenuValidate()){
for(File f : img_container){
try {
//This still gives me the normal file name
System.out.println(f.getName()); 

ftp.putFileToPath(f, FtpClient.DEST_DIR+SQLData.APP_USERNAME+"/"+f);

} catch (IOException ex) {
ex.printStackTrace();
}
}
popup.setVisible(false);
}
}
});

我在JFileChooser中选择了img_container阵列中的所有文件。

File.toString()返回:

返回此抽象路径名的路径名字符串

您想要使用File.getName():

ftp.putFileToPath(f, FtpClient.DEST_DIR+SQLData.APP_USERNAME+"/"+f.getName());

最新更新