【问题标题】:File gets a full path of local source file as its name when uploaded using Java FTPClient使用 Java FTPClient 上传时,文件获取本地源文件的完整路径作为其名称
【发布时间】:2021-06-25 11:28:52
【问题描述】:

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

所以就我而言,我在桌面上有一张图片:C:\Users\Bob\Desktop\image.png。当我在 JfileChooser 中选择文件时,名称仍然只是 image.png。但是当我点击上传到 FTP 服务器时,文件将被重命名为C:\Users\Bob\Desktop\image.png。所以如果我想下载那个文件,我必须使用这个路径:/home/user/users/xy/images/C:\Users\Bob\Desktop\image.png 才能下载它。我知道是什么导致了这个问题。我使用FTPClient.putFileToPath(file,path) 上传文件,它工作正常,文件将被上传。我试图用总指挥官将文件从我的机器复制到 ftp 服务器,但这个问题从未发生过。我提供了一些代码 sn-p,它完成了上传工作。

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 数组中的所有文件。

【问题讨论】:

    标签: java ftp apache-commons-net


    【解决方案1】:

    File.toString() 返回:

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

    你想使用File.getName():

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

    【讨论】:

    • 啊,天哪,真是个错误……我怎么没看到……无论如何,谢谢你帮助我!
    猜你喜欢
    • 1970-01-01
    • 2011-04-13
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 2013-11-24
    • 2016-11-26
    相关资源
    最近更新 更多