2011-05-03 5 views
1

Je suis en train de télécharger un fichier sur un serveur FTP avec ce code:Télécharger le fichier vers le serveur FTP

private void upload(String ftpServer, String user, String password, 
      String fileName, File source) throws MalformedURLException, 
      IOException 
    { 
     if (ftpServer != null && fileName != null && source != null){ 
      StringBuffer sb = new StringBuffer("ftp://"); 

      if (user != null && password != null){ 
       sb.append(user); 
       sb.append(':'); 
       sb.append(password); 
       sb.append('@'); 
      } 

      sb.append(ftpServer); 
      sb.append('/'); 
      sb.append(fileName); 
      sb.append(";type=i"); 

      BufferedInputStream bis = null; 
      BufferedOutputStream bos = null; 
      try 
      { 
       URL url = new URL(sb.toString()); 
       URLConnection urlc = url.openConnection(); 
        urlc.setDoOutput(true); 
       bos = new BufferedOutputStream(urlc.getOutputStream()); 
       bis = new BufferedInputStream(new FileInputStream(source)); 
       int i; 
       while((i = bis.read()) != -1){ 
         bos.write(i); 
       } 

      } 
      finally 
      { 
       if (bis != null) 
        try 
        { 
        bis.close(); 
        } 
        catch (IOException ioe) 
        { 
        ioe.printStackTrace(); 
        } 
       if (bos != null) 
        try 
        { 
        bos.close(); 
        } 
        catch (IOException ioe) 
        { 
        ioe.printStackTrace(); 
        } 
      } 
     } 
     else{ 
      Log.e("Tag", "Input not available."); 
     } 
    } 

Mais le fichier ne se termine pas sur le serveur.

Répondre

1

Le code semble correct, mais vous devez ajouter une instruction catch pour gérer les exceptions et déterminer pourquoi le problème est survenu. Essayez de vous assurer que vous pouvez au moins obtenir le flux de sortie.

try 
{ 
    //do some operation 
    URL url = new URL(CONNECTION_URL); 
    URLConnection urlc = url.openConnection(); 
    urlc.setDoOutput(true); 
    OutputStream outStream = urlc.getOutputStream(); 

} 
catch(IOException ex) 
{ 
    // ** your error information is in ex.getCause() ** 
} 
finally 
{ 
    //clean up 
} 

Vous pouvez également

L'alternative est d'utiliser l'appel ClientFTP de apache, Android - how to upload a file via FTP détails des difficultés à utiliser votre méthode et fait la même recommandation. Il fournit également un bon exemple de la façon d'implémenter FTPclient dans votre code.

Questions connexes