Question

Je suis en train de transférer des fichiers ftp depuis un serveur externe, puis de les supprimer sur le serveur externe. Un fichier a échoué car il y avait un espace dans le nom du fichier. J'ai changé ma commande de suppression ftp pour avoir des guillemets autour du nom du fichier.

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

Mais y a-t-il d'autres caractères qu'un utilisateur pourrait utiliser dans la création de nom de fichier, sur lesquels mon programme continuera de s'étouffer? Je n'ai aucun contrôle sur ce que pourraient être ces noms de fichiers.

(Je mets une balise de SSIS et SQL Server, car je crée la tâche ftp à la volée, à partir d'un package SSIS. Le système d'exploitation des deux côtés est Win XP)

Était-ce utile?

La solution

Tous les caractères réservés par le système de fichiers ne seront pas autorisés. Cela inclut généralement des espaces, des virgules, des barres obliques, des deux points, des guillemets, des guillemets, etc. Mais, comme JaredPar l'a mentionné, l'espace est probablement le seul contrevenant universel, car chaque système de fichiers possède son propre jeu de caractères réservés qui ne se chevauchent pas toujours.

c’est une bonne idée de coder l’URL de n’importe quel chemin ftp ou http. Cela convertira les espaces en% 20, ce qui devrait normalement être compris par le serveur FTP.

Autres conseils

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

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top