Apache commons-net FTP - загрузка файла на безопасный FTP IIS - PullRequest
1 голос
/ 21 декабря 2011

Я пытаюсь загрузить большой файл (> 100 Мб) с помощью библиотеки Apache commons-net FTP на Secure FTP Server IIS.

Вот мой код:

try{
ftpClient = new FTPSClient("TLS", false);
        this.ftpClient.setDataTimeout(6000000);
        this.ftpClient.setConnectTimeout(6000000);
        ftpClient.connect(host, port);
        ftpClient.login(userName, password);
            ftpClient.enterLocalPassiveMode();
         if (ftpClient.getReplyCode() == 230){
               ftpClient.sendCommand("OPTS UTF8 ON");
               ftpClient.execPBSZ(0);
               ftpClient.execPROT("P");
         else{
             throw new Exception("connection failed.....");}
         ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
        InputStream is= new FileInputStream("C:\\movie.avi");
         ftpClient.setUseEPSVwithIPv4(true);
             ftpClient.storeFile(remotePath, is);
         is.close();
       }
         catch (SocketException e) {
    e.printStackTrace();
        } catch (IOException e) {
    e.printStackTrace();
        }

Не удается загрузить файлы размером более 19 МБ. Методы storeFile выдают IOException с пустым StackTrace. Вы можете увидеть ниже IOException переменных:

   e    CopyStreamException  (id=39)    
    cause   CopyStreamException  (id=39)    
    detailMessage   "IOException caught while copying." (id=45) 
    ioException SocketException  (id=46)    
        cause   SocketException  (id=46)    
        detailMessage   "Connection reset by peer: socket write error" (id=50)  
        stackTrace  null    
    stackTrace  null    
    totalBytesTransferred   19084288    

На самом деле это ведет себя следующим образом:

1) когда я начинаю загрузку, создается файл нулевого размера, в то время как я загружаю размер файла по-прежнему равен нулю, и когда возникает исключение, этот пустой файл удаляется FTP.

2) забавно то, что FileZila также не может загрузить эти файлы, но его предельный размер составляет 70 МБ.

Я что-то упустил?

1 Ответ

1 голос
/ 05 января 2012

Хорошо. Печально, правда, проблема вызвана брандмауэром, который закрыл порт данных через 5 минут.

...