Buen dia a todos, un saludo.
Como bien lo dice el titulo, tengo un Spinner que alimento con los nombres de los archivos que hay dentro de la carpeta DirAssets, me muestra la lista con los nombres de los archivos correctamente.
AL tratar de usar esos nombres para copiar ese archivo en un servidor FTP, me marca el siguiente error
B4X:
libcore.io.ErrnoException: open failed: EISDIR (Is a directory)
.
Verifique todo y puse un Log asi.
B4X:
Log(SPinner1.SelectedItem)
y me sale
B4X:
AssetsDir/
, no me arrastra el texto que aparece en el Spinner, alguna idea de cómo reolver esto.
Gracias por tu respuesta @GeoT lo probe de manera distinta
B4X:
Log(Spinner1.SelectedItem)
y me devuelve "AssetsDir". Hice lo que me Indicas y me Sale lo mismo en el Log "AssetsDir/".
La Carpeta de "/VideoCursos" es en el servidor FTP y existe, ahi está bien.
Hice tambien lo Siguiente:
B4X:
Spinner1.AddAll(Array As String(File.DirAssets))
Y ahora me agrega en la lista del Spinner Sólo: AssetsDir
Me estoy estresando jejeje, tal vez la solucion sea mas sencilla, pero no la encuentro.
Gracias
¿Puedes crear un pequeño proyecto sólo con un spinner y haciendo lo que indicas a ver dónde está el problema?
Acabo de hacer un ejemplo tal y como indicas que lo tienes, y me funciona bien, devuelve el nombre del archivo.
Yo también he creado un ejemplo y me funciona correctamente. Sube por FTP el archivo que seleccione en el spinner.
Saludos.
B4X:
Sub Globals
Private Spinner1 As Spinner
Dim ftp As FTP
End Sub
Sub Activity_Create(FirstTime As Boolean)
ftp.Initialize("ftp", "servidor.com", 21, "usuario", "clave")
Activity.LoadLayout("Layout1")
Spinner1.AddAll(File.ListFiles(File.DirAssets))
End Sub
Sub Spinner1_ItemClick (Position As Int, Value As Object)
Log(Spinner1.SelectedItem)
ftp.UploadFile(File.DirAssets, "/" & Spinner1.SelectedItem, True, "/" & Spinner1.SelectedItem)
End Sub
Gracias a los dos por sus comentarios. Aqui pongo el codigo del boton de Subir Archivos.
B4X:
Sub btnEjecutar_Click
Spinner1.Clear
'INDICAMOS EL ARCHIVO A SUBIR, EL DIRECTORIO DONDE SE ENCUENTRA Y LA RUTA DE DESTINO DENTRO DEL SERVIDOR FTP
FTP.UploadFile(File.DirAssets, "/" & Spinner1.SelectedItem, True, "/VideoCursos" & "/" & Spinner1.SelectedItem)
Log(Spinner1.SelectedItem)
Log(File.DirAssets & "/" & Spinner1.SelectedItem)
Log("/VideoCursos" & "/" & Spinner1.SelectedItem)
End Sub
Mi Carpeta en el Servidor FTP se llama VideoCursos
Aparte le agregué el evento al Spinner del ItemClick
B4X:
Sub Spinner1_ItemClick (Position As Int, Value As Object)
Log(Spinner1.SelectedItem)
End Sub
Aqui en al seleccionar un valor Si me muestra en el log El nombre correcto del archivo.
Aqui una Imagen de los resultados de los Logs.
Como Vemos el BANNER_CYM.png, se genera del evento ItemClick del Spinner(Está Correctamente).
El Siguiente Log, Muestra AssetDir y es del Log(Spinner1.SelectedItem) (Ya no es Correcto éste Valor)
Attachments
Captura de pantalla 2018-12-03 a la(s) 11.05.31.png
Sin llegar a probar nada, ¿por qué limpias el Spinner antes de ejecutar el código?
No sé si haciendo un Spinner1.Clear después te devolverá algún valor el Spinner1.SelectedItem
Prueba a comentarla o ponerla al final.
Sabía que era un Error tonto de mi parte. NO me había percado de ello, Spinner1.Clear, era el del problema, borraba el nombre del archivo, aunque no entiendo porqué, pues limpio el spinner antes de cargar los valores, creo yo que no debería de comportarse asi.
Gracias por tu acertada Respuesta @José J. Aguilar