Cliente FTP
Cargar y descargar archivos, gestionar carpetas remotas.
Introducción
Netuno tiene integrado en su framework low-code un cliente FTP, que permite conectar con servidores, enviar y recibir archivos, modificar carpetas, entre otras operaciones remotas.
Admite múltiples conexiones simultáneas, e incluso FTPS.
Esto gracias a la implementación Java y de código abierto Apache Commons Net, que
permite a Netuno proporcionar estas funcionalidades en todos los lenguajes de script mediante el recurso _ftp.
Más información sobre el recurso FTP de Netuno.
Configuración
El primer paso será configurar los datos de acceso al FTP que Netuno utilizará para realizar la conexión.
Navegue dentro de la aplicación que está desarrollando hasta el archivo de configuración de entorno. En este ejemplo, utilizaremos el archivo de entorno de desarrollo ubicado en:
config/_development.json
Compruebe si ya contiene las configuraciones para el FTP; si aún no existen, entonces al final del archivo de configuración (en formato JSON) añada los parámetros de configuración del FTP:
{
...
"ftp": {
"default": {
"enabled": true,
"host": "mi.servidor.net",
"port": 21,
"username": "temp",
"password": "$eCr37"
}
},
...
}
Después de guardar los cambios, basta con reiniciar Netuno para asumir los cambios de la configuración. Siendo estas las
configuraciones predeterminadas para la conexión, como indica el nombre default.
Puede añadir más configuraciones de conexión FTP, pero solo una podrá definirse como predeterminada.
Para añadir más configuraciones de conexión FTP, basta con repetir el bloque de configuración predeterminado y cambiar el nombre
default por otro nombre a su elección; vea el ejemplo:
{
...
"ftp": {
"default": {
"enabled": true,
"host": "mi.servidor.net",
"port": 22,
"username": "temp",
"password": "$eCr37"
},
"otro": {
"enabled": true,
"host": "mi.otro-servidor.net",
"port": 22,
"username": "temp",
"password": "$eCr37"
}
},
...
}
Una configuración similar al ejemplo anterior permitirá utilizar la cuenta default cuando se llame de la siguiente
forma en el código:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const ftp = _ftp.init()
const ftp = _ftp.init()
ftp = _ftp.init()
ftp = _ftp.init()
val ftp = _ftp.init()
def ftp = _ftp.init()
Y para utilizar la configuración otro, basta con añadir el nombre de la configuración como parámetro a la función
_ftp.init() de la siguiente forma:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const ftpOtro = _ftp.init("otro")
const ftpOtro = _ftp.init("otro")
ftpOtro = _ftp.init("otro")
ftpOtro = _ftp.init("otro")
val ftpOtro = _ftp.init("otro")
def ftpOtro = _ftp.init("otro")
Si no se añade un nombre de configuración como parámetro, se utilizará siempre la cuenta
default.
Conexión
Antes de hacer cualquier cosa es necesario iniciar la conexión FTP:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
ftp.connect()
ftp.connect()
ftp.connect()
ftp.connect()
ftp.connect()
ftp.connect()
Carpeta de trabajo
Al realizar operaciones en FTP es necesario definir qué carpeta se utilizará.
Mediante la definición de la carpeta de trabajo podremos realizar las distintas manipulaciones a partir de esta carpeta base.
Para cambiar la carpeta de trabajo:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
ftp.changeWorkingDirectory("mi/carpeta/base")
ftp.changeWorkingDirectory("mi/carpeta/base")
ftp.changeWorkingDirectory("mi/carpeta/base")
ftp.changeWorkingDirectory("mi/carpeta/base")
ftp.changeWorkingDirectory("mi/carpeta/base")
ftp.changeWorkingDirectory("mi/carpeta/base")
Ahora cualquier operación se realizará en esta carpeta o a partir de ella.
Crear y eliminar carpetas
Al crear una carpeta basta con indicar la ruta de esta carpeta:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
ftp.createDirectory("carpeta-temporal")
ftp.createDirectory("carpeta-temporal/subcarpeta")
ftp.createDirectory("carpeta-temporal")
ftp.createDirectory("carpeta-temporal/subcarpeta")
ftp.createDirectory("carpeta-temporal")
ftp.createDirectory("carpeta-temporal/subcarpeta")
ftp.createDirectory("carpeta-temporal")
ftp.createDirectory("carpeta-temporal/subcarpeta")
ftp.createDirectory("carpeta-temporal")
ftp.createDirectory("carpeta-temporal/subcarpeta")
ftp.createDirectory("carpeta-temporal")
ftp.createDirectory("carpeta-temporal/subcarpeta")
Para eliminar o borrar carpetas:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
ftp.deleteDirectory("carpeta-temporal/subcarpeta")
ftp.deleteDirectory("carpeta-temporal")
ftp.deleteDirectory("carpeta-temporal/subcarpeta")
ftp.deleteDirectory("carpeta-temporal")
ftp.deleteDirectory("carpeta-temporal/subcarpeta")
ftp.deleteDirectory("carpeta-temporal")
ftp.deleteDirectory("carpeta-temporal/subcarpeta")
ftp.deleteDirectory("carpeta-temporal")
ftp.deleteDirectory("carpeta-temporal/subcarpeta")
ftp.deleteDirectory("carpeta-temporal")
ftp.deleteDirectory("carpeta-temporal/subcarpeta")
ftp.deleteDirectory("carpeta-temporal")
Renombrar
Es posible renombrar archivos o carpetas; se pasa la ruta antigua y a continuación la nueva ruta:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
ftp.rename("nombre-antiguo", "nombre-nuevo")
ftp.rename("nombre-antiguo", "nombre-nuevo")
ftp.rename("nombre-antiguo", "nombre-nuevo")
ftp.rename("nombre-antiguo", "nombre-nuevo")
ftp.rename("nombre-antiguo", "nombre-nuevo")
ftp.rename("nombre-antiguo", "nombre-nuevo")
Enviar archivos
Para subir un archivo de texto:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
ftp.uploadText("mi-archivo.txt", "¡Hola FTP! Este es mi contenido...")
ftp.uploadText("mi-archivo.txt", "¡Hola FTP! Este es mi contenido...")
ftp.uploadText("mi-archivo.txt", "¡Hola FTP! Este es mi contenido...")
ftp.uploadText("mi-archivo.txt", "¡Hola FTP! Este es mi contenido...")
ftp.uploadText("mi-archivo.txt", "¡Hola FTP! Este es mi contenido...")
ftp.uploadText("mi-archivo.txt", "¡Hola FTP! Este es mi contenido...")
Recibir archivos
Para obtener un archivo de texto:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const contenidoArchivo = ftp.downloadText("mi-archivo.txt")
_out.println(contenidoArchivo)
const contenidoArchivo = ftp.downloadText("mi-archivo.txt")
_out.println(contenidoArchivo)
contenidoArchivo = ftp.downloadText("mi-archivo.txt")
_out.println(contenidoArchivo)
contenidoArchivo = ftp.downloadText("mi-archivo.txt")
_out.println(contenidoArchivo)
val contenidoArchivo = ftp.downloadText("mi-archivo.txt")
_out.println(contenidoArchivo)
def contenidoArchivo = ftp.downloadText("mi-archivo.txt")
_out.println(contenidoArchivo)
Listar elementos en la carpeta
Lista todo el contenido de una carpeta:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
for (const i of ftp.list("ruta/carpeta")) {
if (i.isDirectory()) {
_out.print("Carpeta: ")
} else if (i.isFile()) {
_out.print("Archivo: ")
} else {
_out.print("Otro: ")
}
_out.println(i.getName())
_out.println("<br/>")
}
for (const i of ftp.list("ruta/carpeta")) {
if (i.isDirectory()) {
_out.print("Carpeta: ")
} else if (i.isFile()) {
_out.print("Archivo: ")
} else {
_out.print("Otro: ")
}
_out.println(i.getName())
_out.println("<br/>")
}
for i in ftp.list("ruta/carpeta"):
if i.isDirectory():
_out.print("Carpeta: ")
elif i.isFile():
_out.print("Archivo: ")
else:
_out.print("Otro: ")
_out.println(i.getName())
_out.println("<br/>")
ftp.list("ruta/carpeta").each do |i|
if i.isDirectory()
_out.print("Carpeta: ")
elsif i.isFile()
_out.print("Archivo: ")
else
_out.print("Otro: ")
end
_out.println(i.getName())
_out.println("<br/>")
end
ftp.list("ruta/carpeta").forEach {
if (it.isDirectory()) {
_out.print("Carpeta: ")
} else if (it.isFile()) {
_out.print("Archivo: ")
} else {
_out.print("Otro: ")
}
_out.println(it.getName())
_out.println("<br/>")
}
for (i in ftp.list("ruta/carpeta")) {
if (i.isDirectory()) {
_out.print("Carpeta: ")
} else if (i.isFile()) {
_out.print("Archivo: ")
} else {
_out.print("Otro: ")
}
_out.println(i.getName())
_out.println("<br/>")
}
Devuelve una lista de objetos del tipo FTPFile.