Domanda

Sto eseguendo l'ftp di file da un server esterno, quindi li sto cancellando sul server esterno e un file non è riuscito perché c'era uno spazio nel nome del file. Ho cambiato il mio comando ftp delete per avere virgolette attorno al nome file.

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

Ma ci sono altri personaggi che un utente potrebbe usare nella creazione del suo nome file, su cui il mio programma si strozzerà ancora? Non ho alcun controllo su quali potrebbero essere quei nomi di file.

(Ho messo un tag di SSIS e SQL Server, perché sto creando l'attività ftp al volo, da una pakcage SSIS. Il sistema operativo su entrambi i lati è Win XP)

È stato utile?

Soluzione

Non saranno consentiti caratteri riservati dal file system. Questo di solito include spazi, virgole, barre, due punti, virgolette, virgolette doppie, ecc. Ma come menzionato da JaredPar, lo spazio è probabilmente l'unico offensore universale poiché ogni file system ha il proprio set di caratteri riservati che non sempre si sovrappongono.

è una buona idea url codificare qualsiasi percorso ftp o http. Questo convertirà gli spazi in% 20, che in genere dovrebbe essere compreso dal server ftp.

Altri suggerimenti

Vedi la sezione 5.3 della RFC FTP (RFC 959) . In realtà non ci sono personaggi illegali, tranne CrLf, che sono illegali come parte del nome del file.

Il problema è sapere quali caratteri il server di destinazione si strozzerà rispetto a caratteri FTP illegali. Immagino che oltre allo spazio, non ci siano troppi personaggi che causeranno problemi. Ma non sono un esperto FTP.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top