2016-08-04 13 views
-1

Guten Tag. Ich habe org.apache.commons.net.ftp.FTP in mein Projekt importiert und es gab einige Probleme beim Hochladen der Zip-Datei auf FTP. Wenn es kleine Datei (< 100 MB) hochlädt, funktioniert es gut. Aber wenn es zu einer größeren Datei (> 500MB) kommt, wird es dort stehen bleiben, ohne den verbleibenden Vorgang zurückzugeben und auszuführen, selbst wenn die Datei auf den Server übertragen wurde. Und wie die Funktion/FTP bestätigen, wenn die Übertragung erfolgt? Gibt es das überhaupt, um es zu überprüfen?Java FTP-Upload abgeschlossen aber nicht zurück

public class zipFTP 
{ 
public boolean uploadFile(String ht, String usr, String ps, String fpath, String uploadloc) 
{ 
    FTPClient client = new FTPClient(); 
    FileInputStream fis = null; 
    writeLog nLog = new writeLog(); 
    String channel = "FTP"; 
    boolean completed = false; 
    //client.setBufferSize(1048576); 
    client.setControlKeepAliveReplyTimeout(300); 

    //System.out.println(client.getBufferSize()); 
    try 
    { 
     nLog.writeToLog(dumptoFTP.filename, channel, "Uploading..."); 

     client.connect(ht); 
     client.login(usr, ps); 
     client.enterLocalPassiveMode(); 
     client.setFileType(FTP.BINARY_FILE_TYPE); 

     fis = new FileInputStream(fpath); 
     completed = client.storeFile(uploadloc, fis); 
     //client.completePendingCommand(); //to complete the transaction entirely 
     if(completed) 
     { 
     if (dumptoFTP.isSysLog) 
      System.out.println("File uploaded"); 
      nLog.writeToLog(dumptoFTP.filename, channel, "File uploaded"); 
     } 

     fis.close(); 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
     if (dumptoFTP.isSysLog) 
      System.out.println("Upload failed"); 
     nLog.writeToLog(dumptoFTP.filename, channel, "Upload failed"); 
     nLog.writeToLog(dumptoFTP.filename, channel, e.toString()); 
    } 
    finally 
    { 
     try 
     { 
      if(client.isConnected()) 
      { 
       client.logout(); 
       client.disconnect(); 
      } 
     } 
     catch (IOException ex) 
     { 
      ex.printStackTrace(); 
     } 
    } 

    return completed; 
} 

}

+0

, was du meinst es 'nicht returning' ist es irgendwo blockiert und wenn ja, wo? Einfaches Debugging –

+0

wie gesagt, wenn es kleine Dateien überträgt, funktioniert es. Aber wenn es zu einer größeren Datei kommt, wird es dort aufhören, selbst wenn die Datei vollständig übertragen wurde. – Myiosus

+0

wo hört es auf? –

Antwort

0

Ended up, setBufferSize() funktioniert der Trick

Verwandte Themen