2010-10-21 19 views
1
public class FtpDownloadDemo { 
public static void Connection(String filename) { 
    FTPClient client = new FTPClient(); 
    FileOutputStream fos = null; 

    try { 
     client.connect("ftp.domain.com"); 
     client.login("admin", "secret"); 

     // 
     // The remote filename to be downloaded. 
     // 
     ftpClient.setFileType(FTP.IMAGE_FILE_TYPE); 

     fos = new FileOutputStream(filename); 

     // 
     // Download file from FTP server 
     // 
     client.retrieveFile("/" + filename, fos); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      if (fos != null) { 
       fos.close(); 
      } 
      client.disconnect(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

} 

}Problème de téléchargement de fichier FTP. Obtenir exception des fichiers en lecture seule

J'utilise ce code pour télécharger un fichier image. mais à fos = nouveau FileOutputStream (filename); L'obtention de fichier.jpeg est en lecture seule. J'utilise le fichier jar de commons.net pour la connexion ftp. S'il vous plaît aidez-moi où je me trompe.

+0

Comment cela est-il associé à Android? Où est défini le nom de fichier? Il pointe probablement vers un emplacement où vous n'avez aucun droit d'accès en écriture. – kgiannakakis

+0

en fait c'est une démo. dans mon application android j'ai fait une fonction pour cela. et en passant le nom de fichier en paramètre. – Andy

+2

Vous devez lui transmettre un nom de fichier valide d'un emplacement où vous pouvez écrire, tel que le répertoire de stockage externe après avoir déclaré les autorisations appropriées dans le manifeste. Essayez simplement d'écrire des données factices dans le flux de sortie du fichier sans le FTP, vous obtiendrez probablement la même erreur. –

Répondre

1

J'ai fourni l'hôte, le nom d'utilisateur et le mot de passe lors de la création de la classe, puis j'ai appelé ceci pour télécharger le fichier. Ces gars avaient raison d'essayer d'écrire à la racine ou quelque chose. J'ai utilisé commons-net-2.2.jar pour ce client.

public void GetFileFTP(String srcFileSpec, String destpath, String destname) { 
    File pathSpec = new File(destpath); 
    FTPClient client = new FTPClient(); 
    BufferedOutputStream fos = null; 
    try { 
     client.connect(mhost); 
     client.login(muser, mpass); 

     client.enterLocalPassiveMode(); // important! 
     client.setFileType(org.apache.commons.net.ftp.FTP.BINARY_FILE_TYPE); 
     fos = new BufferedOutputStream(
           new FileOutputStream(pathSpec.toString()+"/"+destname)); 
     client.retrieveFile(srcFileSpec, fos); 
     }//try 
     catch (IOException e) { 
      Log.e("FTP", "Error Getting File"); 
      e.printStackTrace(); 
      }//catch 
     finally { 
      try { 
       if (fos != null) fos.close(); 
       client.disconnect(); 
       }//try 
       catch (IOException e) { 
        Log.e("FTP", "Disconnect Error"); 
        e.printStackTrace(); 
        }//catch 
       }//finally 
    Log.v("FTP", "Done");  
    }//getfileFTP 

Espérons que cela aide.

phavens