2010-03-26 4 views
1

J'essaie d'implémenter un service Windows qui envoie une requête ping à un site FTP et copie son contenu une fois toutes les 3 heures.Copiez et supprimez le fichier à partir du serveur FTP à l'aide du service Windows dans C#

Ce service a des fonctions à

  1. Liste tous les fichiers du site FTP

  2. Copier un fichier

  3. Supprimez le fichier copié

  4. Répète l'étape 2 et 3 pour tous les fichiers du site

+3

Quelle est votre question? Avez-vous besoin de savoir comment le faire? Voulez-vous savoir si quelque chose le fait déjà? Voulez-vous savoir quelles bibliothèques vous aideront à faire le vôtre? Quelle est ta question? – Randolpho

+0

Merci pour votre réponse, Je dois savoir comment le faire si vous avez déjà fait est-il possible d'envoyer le code ou simplement me guider comment le faire – user302579

+0

Si l'opération ci-dessus est la seule chose que votre service fait, il ne devrait probablement pas être un service. Appliquez simplement la fonctionnalité dont vous avez besoin en tant qu'application autonome et placez-la dans le planificateur de tâches pour l'exécuter aux heures souhaitées. C'est une utilisation plus efficace à la fois de votre temps en tant que développeur et des ressources système (en n'ayant pas besoin de garder un autre processus en cours tout le temps). – Dathan

Répondre

1

Il existe deux classes qui vous seront très utiles pour le FTP. Tout d'abord, FtpWebRequest et en second lieu, FtpWebResponse. Quant à l'écriture d'un service Windows: this, et this devrait être utile aussi bien.

Un exemple soulevé de MSDN pour supprimer un fichier:

public static bool DeleteFileOnServer(Uri serverUri) 
{ 
    // The serverUri parameter should use the ftp:// scheme. 
    // It contains the name of the server file that is to be deleted. 
    // Example: ftp://contoso.com/someFile.txt. 
    // 

    if (serverUri.Scheme != Uri.UriSchemeFtp) 
    { 
     return false; 
    } 
    // Get the object used to communicate with the server. 
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri); 
    request.Method = WebRequestMethods.Ftp.DeleteFile; 

    FtpWebResponse response = (FtpWebResponse) request.GetResponse(); 
    Console.WriteLine("Delete status: {0}",response.StatusDescription); 
    response.Close(); 
    return true; 
} 

Avec un peu de travail que vous devriez être en mesure de modifier que de faire tout ce dont vous avez besoin en termes de FTP Access.

3

Utilisez FtpWebRequest. MSDN has samples pour tout ce dont vous avez besoin:

List all files

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.contoso.com/"); 
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; 

Copy one file

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.contoso.com/test.htm"); 
request.Method = WebRequestMethods.Ftp.DownloadFile; 

Delete the copied file

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.contoso.com/test.htm"); 
request.Method = WebRequestMethods.Ftp.DeleteFile; 
+0

Merci pour votre réponse – user302579

+0

un service où mentionner 3 heures de temps – user302579

Questions connexes