Pregunta

Soy ftp'ing archivos de un servidor externo, luego los borro en el servidor externo y un archivo falló porque había un espacio en el nombre del archivo. Cambié mi comando de eliminación de ftp para tener comillas alrededor del nombre de archivo.

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

Pero, ¿hay otros caracteres que un usuario pueda usar en la creación de su nombre de archivo, que mi programa todavía se ahogue? No tengo ningún control sobre cuáles podrían ser esos nombres de archivo.

(Pongo una etiqueta de SSIS y SQL Server, porque estoy creando la tarea ftp sobre la marcha, desde un paquete SSIS. El sistema operativo en ambos lados es Win XP)

¿Fue útil?

Solución

No se permitirán los caracteres reservados por el sistema de archivos. Esto generalmente incluye espacios, comas, barras, dos puntos, signos de interrogación, comillas dobles, etc. Pero como mencionó JaredPar, el espacio es probablemente el único delincuente universal ya que cada sistema de archivos tiene su propio conjunto de caracteres reservados que no siempre se superponen.

es una buena idea codificar url cualquier ruta ftp o http. Esto convertirá los espacios a% 20, lo que normalmente debería ser entendido por el servidor ftp.

Otros consejos

Consulte la sección 5.3 del RFC FTP (RFC 959) . En realidad, no hay caracteres ilegales, excepto CrLf, que son ilegales como parte del nombre del archivo.

El problema es saber con qué caracteres se atragantará el servidor de destino frente a los caracteres FTP ilegales. Supongo que, además del espacio, no hay demasiados caracteres que causen problemas. Pero no soy un experto en FTP.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top