Solapas principales

Pregunta
Javier Ordonez ... · Sep 30, 2019

FTP.OutboundAdapter Método Delete

Hola Comunidad

¿Cómo puedo borrar una carpeta de un servidor FTP?
¿Es posible usar el método Delete del adaptador FTP para borrar carpetas de un servidor FTP?

Cuando uso el método Delete sobre la carpeta la respuesta es "ErrFTPDeleteFailed Permission denied 550", pero tengo todos los privilegios necesarios en el servidor.

Gracias

00
0 3 84 2

Respuestas

@Javier Ordonez Martin 

El error, a priori parece claro, "permiso denegado". ¿Has probado a acceder mediante FTP directamente desde línea de comandos al servidor y probar que funciona correctamente? También es posible que el error se produzca porque el fichero no exista, así que si no es tema de privilegios es posible que esté buscando un fichero pero no un directorio y es por eso que salta este error. En la documentación habla solo de fichero y no de directorio.

He revisado y el adaptador internamente está usando un objeto de clase %Net.FtpSession, esta clase tiene un método Delete que es el que se está llamando y solo sirve para fichero. El método para borrar directorio es RemoveDirectory, pero ese método no se ha llevado al adaptador. Creo que sería relativamente fácil crear tu propio adaptador heredando de EnsLib.FTP.OutboundAdapter y añadir el método RemoveDirectory. Puedes copiar prácticamente todo el código del método Delete y cambiar lo necesario para llamar correctamente a RemoveDirectory.... se me ocurre que incluso sería una buena clase para compartir en el OpenExchange.

Accediendo directamente desde un servidor FTP si puedo eliminar sin problemas las carpetas utilizando las mismas credenciales. Así que en este caso debe ser lo que comentas sobre que Remove solo permite eliminar ficheros.
Probare a implementar la eliminación particular de directorios.
Muchas Gracias