Frage

Ich bin ftp'ing Dateien von einem externen Server und sie dann auf dem externen Server zu löschen, und eine Datei ist fehlgeschlagen, da ein Raum, in dem Dateinamen war. Ich änderte meine ftp-Befehl löscht die Dateinamen haben in Anführungszeichen.

ftpStream.WriteLine("delete """ & FileToDelete & """")

Aber es gibt auch andere Zeichen, die ein Benutzer in ihrem Dateinamen Schöpfung verwenden könnte, dass mein Programm noch ersticken? Ich habe keine Kontrolle haben, was die Dateinamen sein könnte.

(Ich habe einen Tag von SSIS und SQL Server, weil ich die ftp Aufgabe on the fly bin Erstellen von einem SSIS pakcage. O auf beiden Seiten sind Win XP)

War es hilfreich?

Lösung

Alle Zeichen, die durch das Dateisystem reserviert sind, werden nicht zugelassen. Dazu gehören in der Regel Leerzeichen, Kommas, Schrägstriche, Doppelpunkte, quetion Marken, doppelte Anführungszeichen, etc. Aber wie JaredPar erwähnt, Raum ist wahrscheinlich der einzige universelle Täter, da jedes Dateisystem einen eigenen Satz von reservierten Zeichen hat, die sich überlappen nicht immer tun.

eine gute Idee mit url kodieren alle FTP oder HTTP Pfade. Dies wird konvertieren Räume% 20, die typischerweise von dem FTP-Server verstanden werden sollten.

Andere Tipps

Siehe Abschnitt 5.3 des FTP RFC (RFC 959) . Es gibt eigentlich keine ungültigen Zeichen, andere als CrLf, die als Teil des Dateinamens illegal sind.

Das Problem ist, zu wissen, welche Zeichen der Zielserver auf gegen illegale FTP Zeichen ersticken. Ich vermute, dass neben Raum, es gibt nicht zu viele Zeichen, die problem.s verursachen Aber ich bin kein FTP-Experte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top