[ 
https://issues.apache.org/jira/browse/NET-721?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17731387#comment-17731387
 ] 

Michael Osipov commented on NET-721:
------------------------------------

I don't understand why still use FTP whereas there is SSH and HTTPS/WebDAV...

> FTPClient::retrieveFileStream returns empty stream for binary files when 
> running on remote Linux
> ------------------------------------------------------------------------------------------------
>
>                 Key: NET-721
>                 URL: https://issues.apache.org/jira/browse/NET-721
>             Project: Commons Net
>          Issue Type: Bug
>    Affects Versions: 3.9.0
>            Reporter: Dmytro Sylaiev
>            Priority: Major
>
> I have next code works differently running on my local Windows machine and on 
> linux docker container when args[0] is the binary file:
>  
>  
> {noformat}
> public class Main {
>     public static void main(String[] args) throws IOException {
>         String fileName = args[0];
>         
>         System.out.println("Print " + fileName + ":");
>         printFile(fileName);
>     }
>     private static void printFile(String fileName) throws IOException {
>     FTPClient client = new FTPClient();
>     try {
>         client.connect(host, port);
>         client.login(user, pass);
>         client.enterLocalPassiveMode();
>         client.setFileType(FTP.BINARY_FILE_TYPE);
>         try (InputStream is = client.retrieveFileStream(fileName)) {
>             client.completePendingCommand();
>             while (is.available() > 0) {
>                 int i = is.read();
>                 System.out.print((char) i);
>             }
>             System.out.println();
>         }
>     } finally {
>         if (client.isConnected()) {
>             client.disconnect();
>         }
>     }
>     }
> }{noformat}
>  
>  
> When running it locally I have file content printed, but also I tried with 
> jetty:11.0.15-jdk11 container, I executed same jar there and got empty stream 
> in result:
>  
>  
> {noformat}
> docker cp ~\codecTest\. <containerName>:/codecTest
> docker exec -it <containerName> /bin/bash
> root@999c8e3413cc:/codecTest/target# java -jar codecTest-1.0-SNAPSHOT.jar 
> output.zip
> Print output.zip:
> root@999c8e3413cc:/codecTest/target#{noformat}
> When I put some debug log.info line I have found that is.available() is 0 
> when executing on linux, despite I have called 
> client.setFileType(FTP.BINARY_FILE_TYPE); and client.completePendingCommand();
>  
>  
> When execute same code in the remote debug and give the jvm some time to 
> fetch the stream, it works correctly. Also no problem when retieveStream for 
> ASCII files (even big one)
>  
> FileZilla log is also OK:
>  
> {noformat}
> (000066)11.06.2023 15:58:08 - (not logged in) (ip)> Connected on port 9021, 
> sending welcome message...
> (000066)11.06.2023 15:58:08 - (not logged in) (ip)> 220-FileZilla Server 
> 0.9.60 beta
> (000066)11.06.2023 15:58:08 - (not logged in) (ip)> 220-written by Tim Kosse 
> ([email protected])
> (000066)11.06.2023 15:58:08 - (not logged in) (ip)> 220 Please visit 
> https://filezilla-project.org/
> (000066)11.06.2023 15:58:08 - (not logged in) (ip)> USER <user>
> (000066)11.06.2023 15:58:08 - (not logged in) (ip)> 331 Password required for 
> lserver
> (000066)11.06.2023 15:58:08 - (not logged in) (ip)> PASS <pass>
> (000066)11.06.2023 15:58:08 - lserver (ip)> 230 Logged on
> (000066)11.06.2023 15:58:08 - lserver (ip> TYPE I
> (000066)11.06.2023 15:58:08 - lserver (ip)> 200 Type set to I
> (000066)11.06.2023 15:58:08 - lserver (ip)> PASV
> (000066)11.06.2023 15:58:08 - lserver (ip)> 227 Entering Passive Mode 
> (95,67,26,232,60,72)
> (000066)11.06.2023 15:58:08 - lserver (ip)> RETR output.zip
> (000066)11.06.2023 15:58:08 - lserver (ip)> 150 Opening data channel for file 
> download from server of "/output.zip"
> (000066)11.06.2023 15:58:08 - lserver (ip)> 226 Successfully transferred 
> "/output.zip"
> (000066)11.06.2023 15:58:08 - lserver (ip)> disconnected{noformat}
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to