How to copy a file on the FTP server to a directory on the same server in Java?

前端 未结 4 924
长情又很酷
长情又很酷 2020-12-05 08:25

I\'m using Apache Commons FTP to upload a file. Before uploading I want to check if the file already exists on the server and make a backup from it to a backup directory on

4条回答
  •  旧时难觅i
    2020-12-05 09:03

    There's no standard way to duplicate a remote file over FTP protocol. Some FTP servers support proprietary or non-standard extensions for this though.


    So if your are lucky that your server is ProFTPD with mod_copy module, you can use FTP.sendCommand to issue these two commands:

    f.sendCommand("CPFR sourcepath");
    f.sendCommand("CPTO targetpath");
    

    The second possibility is that your server allows you to execute arbitrary shell commands. This is even less common. If your server supports this you can use SITE EXEC command:

    SITE EXEC cp -p sourcepath targetpath
    

    Another workaround is to open a second connection to the FTP server and make the server upload the file to itself by piping a passive mode data connection to an active mode data connection. Implementation of this solution (in PHP though) is shown in FTP copy a file to another place in same FTP.


    If neither of this works, all you can do is to download the file to a local temporary location and re-upload it back to the target location. This is that the answer by @RP- shows.


    See also FTP copy a file to another place in same FTP.

提交回复
热议问题