2008-12-31 4 views
1

Je suis ftp'ing fichiers à partir d'un serveur externe, puis les supprimer sur le serveur externe, et un fichier a échoué car il y avait un espace dans le nom de fichier. J'ai changé ma commande ftp delete pour avoir des guillemets autour du nom de fichier.Quels caractères ne sont pas autorisés dans une commande ftp Delete?

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

Mais, y at-il d'autres caractères qu'un utilisateur peut utiliser dans leur création de nom, que mon programme encore étouffer? Je n'ai aucun contrôle sur ce que pourraient être ces noms de fichiers.

(je mets une étiquette de SSIS et SQL Server, car je crée la tâche ftp à la volée, à partir d'un pakcage SSIS. OS sur les deux côtés sont Win XP)

Répondre

2

Tous les caractères réservés par le système de fichiers ne seront pas autorisés. Comme le mentionne JaredPar, l'espace est probablement le seul délinquant universel puisque chaque système de fichiers possède son propre ensemble de caractères réservés qui ne se chevauchent pas toujours.

est une bonne idée d'encoder l'URL de tous les chemins ftp ou http. Cela convertira les espaces en% 20 qui devraient normalement être compris par le serveur ftp.

+0

Oh! Ça a l'air d'être une bonne idée. – thursdaysgeek

0

Voir la section 5.3 du FTP RFC (RFC 959). Il n'y a pas de caractères illégaux, autres que CrLf, qui sont illégaux dans le nom du fichier.

Le problème est de savoir quels caractères le serveur de destination va étouffer par rapport aux caractères FTP illégaux. Je suppose qu'en dehors de l'espace, il n'y a pas trop de caractères qui vont causer des problèmes. Mais je ne suis pas un expert FTP.

Questions connexes