hola a todos
alguien a practicado con cURL??
solo he encontrado un ejemplo dentro del pixtudio: 08_mod_curl.prg
y esta documentacion:
http://dacucar.com/pixtudiodocs/mod_curl_symbols/
en ese ejemplo lo unico que hace es descargar un fichero por protocolo HTTP
Me gustaria usar cURL para usar el protocolo FTP para mi host.
Lo basico:
-Descargar fichero
-Subir fichero
-Crear carpeta
-Listar directorio
Alguien sabe donde puedo encontrar documentacion sobre ello?
Solo encontre esto:
https://curl.haxx.se/libcurl/c/ftpget.html
https://curl.haxx.se/libcurl/c/ftpupload.html
Pues la verdad es que nunca he usado esa librería pero en el Bennupack es muy posible que tengas algún ejemplo de uso.
Lo mejor para descargar un archivo de un servidor es con http como en el ejemplo de curl
08_mod_curl.prg
para subir un fichero lo mejor seria usar el estandard json y subirlo mediante php
pero bueno haber si alguien hace un ejemplo de ftp en bennu...
creo que es posible meteer en la URL la clave y usuario .. ftp://username:password@hostname/
o mediante la funcion setopt
curl_easy_setopt( curl, CURLOPT_USERPWD, "username:password" );
que en bennu seria...
CURL_SETOPT(curl, CURLOPT_USERPWD, "username:password" );
curl_setopt(curl, CURLOPT_URL, "ftp.miservidor.com");
el resto tocaria probar... y que alguien se haga el ejemplo..
http://stackoverflow.com/questions/10448035/authenticating-libcurl-ftp-download-in-c
http://stackoverflow.com/questions/2162022/downloading-all-files-in-directory-using-libcurl
asi que se podria hacer un ejemplo con la curl de bennu ;D
como aqui que especifica el directorio donde esta el fic hero
https://curl.haxx.se/libcurl/c/ftpsget.html
creo que podrias adaptatr los ejemplos facil, usando setopt para la clave y usuario
https://curl.haxx.se/libcurl/c/ftpget.html
https://curl.haxx.se/libcurl/c/ftpupload.html
aqui te dejo las declaraciones del mod_curl ...
constantes numericas:
{ "CURLOPT_VERBOSE" , TYPE_DWORD, CURLOPT_VERBOSE },
{ "CURLOPT_HEADER" , TYPE_DWORD, CURLOPT_HEADER },
{ "CURLOPT_NOPROGRESS" , TYPE_DWORD, CURLOPT_NOPROGRESS },
{ "CURLOPT_NOSIGNAL" , TYPE_DWORD, CURLOPT_NOSIGNAL },
{ "CURLOPT_WILDCARDMATCH" , TYPE_DWORD, CURLOPT_WILDCARDMATCH },
{ "CURLOPT_WRITEDATA" , TYPE_DWORD, CURLOPT_WRITEDATA },
{ "CURLOPT_READDATA" , TYPE_DWORD, CURLOPT_READDATA },
{ "CURLOPT_WRITEHEADER" , TYPE_DWORD, CURLOPT_WRITEHEADER },
{ "CURLOPT_FAILONERROR" , TYPE_DWORD, CURLOPT_FAILONERROR },
{ "CURLOPT_URL" , TYPE_DWORD, CURLOPT_URL },
{ "CURLOPT_PROTOCOLS" , TYPE_DWORD, CURLOPT_PROTOCOLS },
{ "CURLOPT_REDIR_PROTOCOLS" , TYPE_DWORD, CURLOPT_REDIR_PROTOCOLS },
{ "CURLOPT_PROXY" , TYPE_DWORD, CURLOPT_PROXY },
{ "CURLOPT_PROXYPORT" , TYPE_DWORD, CURLOPT_PROXYPORT },
{ "CURLOPT_PROXYTYPE" , TYPE_DWORD, CURLOPT_PROXYTYPE },
{ "CURLOPT_NOPROXY" , TYPE_DWORD, CURLOPT_NOPROXY },
{ "CURLOPT_HTTPPROXYTUNNEL" , TYPE_DWORD, CURLOPT_HTTPPROXYTUNNEL },
{ "CURLOPT_SOCKS5_GSSAPI_SERVICE" , TYPE_DWORD, CURLOPT_SOCKS5_GSSAPI_SERVICE },
{ "CURLOPT_SOCKS5_GSSAPI_NEC" , TYPE_DWORD, CURLOPT_SOCKS5_GSSAPI_NEC },
{ "CURLOPT_INTERFACE" , TYPE_DWORD, CURLOPT_INTERFACE },
{ "CURLOPT_LOCALPORT" , TYPE_DWORD, CURLOPT_LOCALPORT },
{ "CURLOPT_LOCALPORTRANGE" , TYPE_DWORD, CURLOPT_LOCALPORTRANGE },
{ "CURLOPT_DNS_CACHE_TIMEOUT" , TYPE_DWORD, CURLOPT_DNS_CACHE_TIMEOUT },
{ "CURLOPT_DNS_USE_GLOBAL_CACHE" , TYPE_DWORD, CURLOPT_DNS_USE_GLOBAL_CACHE },
{ "CURLOPT_BUFFERSIZE" , TYPE_DWORD, CURLOPT_BUFFERSIZE },
{ "CURLOPT_PORT" , TYPE_DWORD, CURLOPT_PORT },
{ "CURLOPT_TCP_NODELAY" , TYPE_DWORD, CURLOPT_TCP_NODELAY },
{ "CURLOPT_ADDRESS_SCOPE" , TYPE_DWORD, CURLOPT_ADDRESS_SCOPE },
{ "CURLOPT_NETRC" , TYPE_DWORD, CURLOPT_NETRC },
{ "CURL_NETRC_OPTIONAL" , TYPE_DWORD, CURL_NETRC_OPTIONAL },
{ "CURL_NETRC_IGNORED" , TYPE_DWORD, CURL_NETRC_IGNORED },
{ "CURL_NETRC_REQUIRED" , TYPE_DWORD, CURL_NETRC_REQUIRED },
{ "CURLOPT_NETRC_FILE" , TYPE_DWORD, CURLOPT_NETRC_FILE },
{ "CURLOPT_USERPWD" , TYPE_DWORD, CURLOPT_USERPWD },
{ "CURLOPT_PROXYUSERPWD" , TYPE_DWORD, CURLOPT_PROXYUSERPWD },
{ "CURLOPT_USERNAME" , TYPE_DWORD, CURLOPT_USERNAME },
{ "CURLOPT_PASSWORD" , TYPE_DWORD, CURLOPT_PASSWORD },
{ "CURLOPT_PROXYUSERNAME" , TYPE_DWORD, CURLOPT_PROXYUSERNAME },
{ "CURLOPT_PROXYPASSWORD" , TYPE_DWORD, CURLOPT_PROXYPASSWORD },
{ "CURLOPT_HTTPAUTH" , TYPE_DWORD, CURLOPT_HTTPAUTH },
{ "CURLAUTH_BASIC" , TYPE_DWORD, CURLAUTH_BASIC },
{ "CURLAUTH_DIGEST" , TYPE_DWORD, CURLAUTH_DIGEST },
{ "CURLAUTH_DIGEST_IE" , TYPE_DWORD, CURLAUTH_DIGEST_IE },
{ "CURLAUTH_GSSNEGOTIATE" , TYPE_DWORD, CURLAUTH_GSSNEGOTIATE },
{ "CURLAUTH_NTLM" , TYPE_DWORD, CURLAUTH_NTLM },
{ "CURLAUTH_ANY" , TYPE_DWORD, CURLAUTH_ANY },
{ "CURLAUTH_ANYSAFE" , TYPE_DWORD, CURLAUTH_ANYSAFE },
{ "CURLAUTH_ONLY" , TYPE_DWORD, CURLAUTH_ONLY },
{ "CURLOPT_TLSAUTH_TYPE" , TYPE_DWORD, CURLOPT_TLSAUTH_TYPE },
{ "CURLOPT_TLSAUTH_USERNAME" , TYPE_DWORD, CURLOPT_TLSAUTH_USERNAME },
{ "CURLOPT_TLSAUTH_PASSWORD" , TYPE_DWORD, CURLOPT_TLSAUTH_PASSWORD },
{ "CURLOPT_PROXYAUTH" , TYPE_DWORD, CURLOPT_PROXYAUTH },
{ "CURLOPT_AUTOREFERER" , TYPE_DWORD, CURLOPT_AUTOREFERER },
{ "CURLOPT_FOLLOWLOCATION" , TYPE_DWORD, CURLOPT_FOLLOWLOCATION },
{ "CURLOPT_UNRESTRICTED_AUTH" , TYPE_DWORD, CURLOPT_UNRESTRICTED_AUTH },
{ "CURLOPT_MAXREDIRS" , TYPE_DWORD, CURLOPT_MAXREDIRS },
{ "CURLOPT_POSTREDIR" , TYPE_DWORD, CURLOPT_POSTREDIR },
{ "CURLOPT_PUT" , TYPE_DWORD, CURLOPT_PUT },
{ "CURLOPT_POST" , TYPE_DWORD, CURLOPT_POST },
{ "CURLOPT_POSTFIELDS" , TYPE_DWORD, CURLOPT_POSTFIELDS },
{ "CURLOPT_COPYPOSTFIELDS" , TYPE_DWORD, CURLOPT_COPYPOSTFIELDS },
{ "CURLOPT_HTTPPOST" , TYPE_DWORD, CURLOPT_HTTPPOST },
{ "CURLOPT_REFERER" , TYPE_DWORD, CURLOPT_REFERER },
{ "CURLOPT_USERAGENT" , TYPE_DWORD, CURLOPT_USERAGENT },
{ "CURLOPT_HTTPHEADER" , TYPE_DWORD, CURLOPT_HTTPHEADER },
{ "CURLOPT_COOKIE" , TYPE_DWORD, CURLOPT_COOKIE },
{ "CURLOPT_COOKIEFILE" , TYPE_DWORD, CURLOPT_COOKIEFILE },
{ "CURLOPT_COOKIEJAR" , TYPE_DWORD, CURLOPT_COOKIEJAR },
{ "CURLOPT_COOKIESESSION" , TYPE_DWORD, CURLOPT_COOKIESESSION },
{ "CURLOPT_COOKIELIST" , TYPE_DWORD, CURLOPT_COOKIELIST },
{ "CURLOPT_HTTPGET" , TYPE_DWORD, CURLOPT_HTTPGET },
{ "CURLOPT_HTTP_VERSION" , TYPE_DWORD, CURLOPT_HTTP_VERSION },
{ "CURL_HTTP_VERSION_NONE" , TYPE_DWORD, CURL_HTTP_VERSION_NONE },
{ "CURL_HTTP_VERSION_1_0" , TYPE_DWORD, CURL_HTTP_VERSION_1_0 },
{ "CURL_HTTP_VERSION_1_1" , TYPE_DWORD, CURL_HTTP_VERSION_1_1 },
{ "CURLOPT_IGNORE_CONTENT_LENGTH" , TYPE_DWORD, CURLOPT_IGNORE_CONTENT_LENGTH },
{ "CURLOPT_HTTP_CONTENT_DECODING" , TYPE_DWORD, CURLOPT_HTTP_CONTENT_DECODING },
{ "CURLOPT_HTTP_TRANSFER_DECODING", TYPE_DWORD, CURLOPT_HTTP_TRANSFER_DECODING },
==================================================
funciones
FUNC( "CURL_INIT" , "" , TYPE_INT , bgd_curl_easy_init ),
FUNC( "CURL_CLEANUP" , "I" , TYPE_INT , bgd_curl_easy_cleanup ),
FUNC( "CURL_FORMADD" , "IISIS" , TYPE_INT , bgd_curl_formadd ),
FUNC( "CURL_FORMFREE" , "I" , TYPE_INT , bgd_curl_formfree ),
FUNC( "CURL_SETOPT" , "III" , TYPE_INT , bgd_curl_easy_setopt ),
FUNC( "CURL_SETOPT" , "IIS" , TYPE_INT , bgd_curl_easy_setopt2 ),
FUNC( "CURL_SETOPT" , "IIP" , TYPE_INT , bgd_curl_easy_setopt3 ),
FUNC( "CURL_PERFORM" , "IP" , TYPE_INT , bgd_curl_easy_perform ),
Genial!!
cuando tenga un buen rato, trasteo, y te confirmo (estas pruebas las hago bajo Windows 10).
Gracias por darme toda la informacion!
hare pruebas con mi host. La pega de mi host que no permite descarga de ficheros por http, pide autenticación usuario ftp.
Podrias usar este para probar
https://www.biz.nf/web-hosting.php
es el que usamos para los ejemplos
ademas te dan un dominio corto como
http://coldev.co.nf/
(http://coldev.co.nf/)
Probando en android, por que no puede almacenar lo descargado en la memoria de "Data"?
debe ser si o si, en el almacenamiento externo? como tu ejemplo
Asi que copie tu ejemplo, para guardarlo en el AlmacenamientoExterno
12-13 00:35:20.693 8921 8946 E SDL/APP : SDL msg: PixTudio init
12-13 00:35:20.772 584 605 E WindowManager: Performed 6 layouts in a row. Skipping
12-13 00:35:20.812 584 3070 E WindowManager: Performed 6 layouts in a row. Skipping
12-13 00:35:21.109 8921 8946 E SDL/APP : SDL msg: Inicio Bennu -> Java AlmacenamientoExternoListo
12-13 00:35:21.110 8921 8946 E SDL/APP : SDL msg: Retorno Bennu -> Java AlmacenamientoExternoListo
12-13 00:35:21.114 8921 8921 E Pixtudio: Get Android External Storage Ready: 1
12-13 00:35:22.135 8921 8946 E SDL/APP : SDL msg: Inicio Bennu -> Java ObtenerRutaAlmacenamientoExterno
12-13 00:35:22.135 8921 8946 E SDL/APP : SDL msg: Retorno Bennu -> Java ObtenerRutaAlmacenamientoExterno
12-13 00:35:22.141 8921 8921 E Pixtudio: Get Android External Storage Path: /storage/emulated/0
12-13 00:35:22.144 8921 8921 E SDL/APP : SDL msg: Java->Bennu /storage/emulated/0
12-13 00:35:22.144 8921 8921 E SDL/APP : SDL msg: Java->Bennu fase 1
12-13 00:35:22.144 8921 8921 E SDL/APP : SDL msg: Java->Bennu fase 2 final
12-13 00:35:22.144 8921 8921 E Pixtudio: Get Android External Storage Path: FINAL
12-13 00:35:23.162 8921 8946 E SDL/APP : SDL msg: /storage/emulated/0/4.zon
12-13 00:35:23.165 8921 8946 E SDL/APP : SDL msg: Removed existing
12-13 00:35:24.524 8921 8946 E SDL/APP : SDL msg: Download done!
12-13 00:35:24.527 8921 8946 E SDL/APP : SDL msg: /storage/emulated/0/4.zon
y puede descargarlo por protocolo FTP, con usuario, contraseña:
curl_setopt(curl, CURLOPT_URL, "ftp://<user>:<passwd>@penguinpush.co.nf/penguinpush.co.nf/EDIT_ZON/"+FICHERO);
por ejemplo...
Hasta ahora es la prueba que echo bajo android, y si funciona asi.
aun no he probado que se pueda Subir un fichero.
Existe alguna manera de leer un fichero de texto ASCII linea x linea de forma directa, sin descargar todo el fichero entero???