2011-01-04 21 views
0

I Methode verwende Ordner i Ausnahme wollen auf ftp zu erstellen, wenn der Ordner bereits exsists, wie es über machen den vorhandenen Ordner schreibenOrdner erstellen auf ftp

using System; using System.Net; 

class Test { 
    static void Main() 
    { 
     WebRequest request = WebRequest.Create("ftp://host.com/directory"); 
     request.Method = WebRequestMethods.Ftp.MakeDirectory; 
     request.Credentials = new NetworkCredential("user", "pass"); 
     using (var resp = (FtpWebResponse) request.GetResponse()) 
     { 
      Console.WriteLine(resp.StatusCode); 
     } 
    } } 

es ist „Remote-Server einen Fehler zurückgegeben (550) Datei nicht gefunden "

Antwort

3

Nun," Ich möchte eine Ausnahme erhalten, wenn der Ordner bereits existiert "und" wie es den vorhandenen Ordner überschreiben soll "sind zwei gegensätzliche Fragen.

Auf jeden Fall habe ich gerade Code implementiert, um dies neulich zu tun. Überprüfen Sie, ob das Verzeichnis bereits existiert. Und dann darauf basierend antworten. Es hat keinen Sinn, ein Verzeichnis zu erstellen, das bereits existiert.

Und wenn Sie es irgendwie überschreiben müssen, dann löschen Sie das vorhandene Verzeichnis, bevor Sie das neue erstellen.

Sie können den Code sehen, den ich dafür in dem Artikel An FtpClient Class and WinForm Control schrieb, obwohl es vorhandenen Inhalt gerade überschreibt.

+0

, wie Sie überprüfen, ob sie bereits existieren? –

+0

Ich habe keinen Zugriff auf den Code, den ich gerade verwendet habe, aber ich denke, ich habe etwas wie WebRequestMethods.Ftp.ListDirectory verwendet und auf einen Fehler getestet. Wenn es keinen Fehler gab, könnte ich annehmen, dass das Verzeichnis existiert. –

+0

Ja, versuchen Sie, das Verzeichnis in try Block aufzulisten, und wenn webException.Message.Contains ("550") dann Verzeichnis nicht existiert –

0

Sie können einen vorhandenen Ordner nicht überschreiben ... Ich bin mir nicht einmal sicher, welchen Nutzen das haben könnte.

Kurz gesagt, Sie müssen die Ausnahme erfassen und entscheiden, was zu tun ist. Entweder lassen Sie es an Ort und Stelle (schließlich existiert es bereits ...) oder Sie müssen den vorhandenen Ordner löschen und versuchen, es neu zu erstellen.

Ich erinnere mich nicht, wenn Sie einen Ordner löschen können, der derzeit Dateien enthält. Wenn Sie nicht können, müssen Sie diese auch löschen.

+1

Lustig, dass er meldet, dass er einen Fehler "Datei nicht gefunden" erhält. –

+0

@Klaus: Ja, ich dachte, das war ein bisschen komisch selbst – NotMe

0

Sie könnten einige vorhandene ftp libs da draußen betrachten. Ich benutze das und hatte großen Erfolg damit. Es ist eine FTP-Client-Bibliothek, die High-Level-FTP-Funktionalität für die FTP-Anforderung in .NET Framework 2.0 bietet.

Es verfügt über eine API zum Überprüfen, ob ein Verzeichnis vorhanden ist und zum Erstellen des Verzeichnisses.

-Code @http://ftpclient.codeplex.com/

Artikel @http://www.codeproject.com/KB/IP/FtpClient.aspx

1

Ich benutze diese func in Lösung

private void createFolder(string ftpUName, string ftpPWord) 
    { 
      WebRequest ftpRequest = WebRequest.Create("ftp://mrhotro.ad/new_sc"); 
      ftpRequest.Method = WebRequestMethods.Ftp.MakeDirectory; 
      ftpRequest.Credentials = new NetworkCredential(ftpUName, ftpPWord); 
    } 
+0

warum Ordner-Name nicht in Args ist? – qmor

Verwandte Themen