#include "c:\harb16\include\hbcurl.ch"
#include "fivewin.ch"
function Main()
? curl_global_init()
? FtpUploadFile( "sftp://10.10.1.6/test.prg", "c:\fwh16\samples\curl.prg" )
? curl_global_cleanup()
return nil
function FtpUploadFile( cUrlFileName, cFileName )
local hCurl, uValue, nResult
if ! empty( hCurl := curl_easy_init() )
? curl_easy_setopt( hCurl, HB_CURLOPT_URL, cUrlFileName )
? curl_easy_setopt( hCurl, HB_CURLOPT_DL_BUFF_SETUP )
? curl_easy_setopt( hCurl, HB_CURLOPT_FTPPORT, 22 )
? curl_easy_setopt( hCurl, HB_CURLOPT_USE_SSL, HB_CURLUSESSL_ALL)
? curl_easy_setopt( hCurl, HB_CURLOPT_SSL_VERIFYPEER, .f.)
? curl_easy_setopt( hCurl, HB_CURLOPT_PROTOCOLS, HB_CURLPROTO_SFTP )
? curl_easy_setopt( hCurl, HB_CURLOPT_UPLOAD )
? curl_easy_setopt( hCurl, HB_CURLOPT_UL_FILE_SETUP, cFileName )
? curl_easy_setopt( hCurl, HB_CURLOPT_INFILESIZE, hb_vfSize( cFileName ) )
? curl_easy_setopt( hCurl, HB_CURLOPT_USERPWD, "miusuario:mipassword" )
? curl_easy_setopt( hCurl, HB_CURLOPT_FAILONERROR, .T. )
? curl_easy_setopt( hCurl, HB_CURLOPT_FILETIME, .T. )
? curl_easy_setopt( hCurl, HB_CURLOPT_NOPROGRESS, 0 )
? curl_easy_setopt( hCurl, HB_CURLOPT_VERBOSE, .F. )
if ( nResult := curl_easy_perform( hCurl ) ) == 0
curl_easy_dl_buff_get( hCurl )
else
? "error code:" + Str( nResult )
endif
endif
return nResult == HB_CURLE_OK
#include "c:\harbour\include\hbcurl.ch"
#include "fileio.ch"
function Main()
SftpSubirFichero( "sftp://url_hasta_subidirectorio/nombreficher", "direccion_disco_local\nombre_fichero_que_quieras", "usuario", "contraseña" )
return nil
function sFtpSubirFichero( cUrlFileName, cFileName, aUser, aPass )
local hCurl
local nResult
local aaUser := AllTrim(aUser)
local aaPass := AllTrim(aPass)
local aCadena := aaUser+":"+aaPass
curl_global_init()
if ! empty( hCurl := curl_easy_init() )
curl_easy_setopt( hCurl, HB_CURLOPT_PROTOCOLS, HB_CURLPROTO_SFTP)
curl_easy_setopt( hCurl, HB_CURLOPT_URL, cUrlFileName )
curl_easy_setopt( hCurl, HB_CURLOPT_DL_BUFF_SETUP )
curl_easy_setopt( hCurl, HB_CURLOPT_UPLOAD )
curl_easy_setopt( hCurl, HB_CURLOPT_UL_FILE_SETUP, cFileName )
curl_easy_setopt( hCurl, HB_CURLOPT_INFILESIZE, hb_vfSize( cFileName ) )
curl_easy_setopt( hCurl, HB_CURLOPT_USERPWD, aCadena )
curl_easy_setopt( hCurl, HB_CURLOPT_TCP_KEEPALIVE, 1 )
curl_easy_setopt( hCurl, HB_CURLOPT_SSL_VERIFYHOST, 0 )
curl_easy_setopt( hCurl, HB_CURLOPT_SSL_VERIFYPEER, 0 )
curl_easy_setopt( hCurl, HB_CURLOPT_VERBOSE, 1 )
curl_easy_setopt( hCurl, HB_CURLOPT_USE_SSL, 0 )
if ( nResult := curl_easy_perform( hCurl ) ) == 0
nResult := curl_easy_dl_buff_get( hCurl )
else
? "error code:" + Str( nResult )
endif
endif
curl_global_cleanup()
return nResult
FUNCTION sFtpBajarFichero(sUrl, aDirDestino, aFileDestino, aUser, aPass )
LOCAL curl, lOK
local aCadena := AllTrim(aUser+":"+aPass)
local aFicheroFinal := AllTrim(aDirDestino+"\"+aFileDestino)
curl_global_init()
if ! Empty( curl := curl_easy_init() )
curl_easy_setopt( curl, HB_CURLOPT_PROTOCOLS, HB_CURLPROTO_SFTP )
curl_easy_setopt( curl, HB_CURLOPT_DOWNLOAD )
curl_easy_setopt( curl, HB_CURLOPT_URL, sUrl )
curl_easy_setopt( curl, HB_CURLOPT_USERPWD, aCadena )
curl_easy_setopt( curl, HB_CURLOPT_SSL_VERIFYPEER, 0 )
curl_easy_setopt( curl, HB_CURLOPT_SSL_VERIFYHOST, 0 )
curl_easy_setopt( curl, HB_CURLOPT_FOLLOWLOCATION )
curl_easy_setopt( curl, HB_CURLOPT_FILETIME, 1)
curl_easy_setopt( curl, HB_CURLOPT_DL_FILE_SETUP,aFicheroFinal)
curl_easy_setopt( curl, HB_CURLOPT_NOPROGRESS, 1 )
curl_easy_setopt( curl, HB_CURLOPT_VERBOSE, 1 )
curl_easy_perform( curl )
if curl_easy_perform( curl ) == 0
lOK := 1
Else
lOK := 0
endif
//curl_easy_reset( curl )
endif
curl_global_cleanup()
RETURN lOK
hmpaquito wrote:pepe_garcia wrote:Buenas,
Ya tengo operativo al 100x100 tanto el UPLOAD, como el DONWLOAD para un servidor SFTP indicandole carpeta origen y destino, en ambas opciones.
Gracias por todo, si alguien necesita el codigo solo tiene que pedirlo.
Saludos
Perfecto pepe_garcia...
Nos volcamos aqui todos en ayudarte a que te funcione y ahora nos regateas el codigo en vez de dar las gracias y dejar pegado el codigo para cualquiera que alguna vez pase por el foro
Por favor, que nivel maribel
//Para tratamiento CURL
#include "C:\harbour64_MVSC_2022\contrib\hbcurl\hbcurl.ch"
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_formadd sin resolver al que se hace referencia en la función HB_FUN_CURL_EASY_SETOPT
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_formfree sin resolver al que se hace referencia en la función PHB_CURL_free
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_version sin resolver al que se hace referencia en la función HB_FUN_CURL_VERSION
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_easy_escape sin resolver al que se hace referencia en la función HB_FUN_CURL_EASY_ESCAPE
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_escape sin resolver al que se hace referencia en la función HB_FUN_CURL_ESCAPE
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_easy_unescape sin resolver al que se hace referencia en la función HB_FUN_CURL_EASY_UNESCAPE
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_unescape sin resolver al que se hace referencia en la función HB_FUN_CURL_UNESCAPE
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_free sin resolver al que se hace referencia en la función HB_FUN_CURL_EASY_ESCAPE
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_global_init_mem sin resolver al que se hace referencia en la función HB_FUN_CURL_GLOBAL_INIT
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_global_cleanup sin resolver al que se hace referencia en la función HB_FUN_CURL_GLOBAL_CLEANUP
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_slist_append sin resolver al que se hace referencia en la función HB_FUN_CURL_EASY_SETOPT
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_slist_free_all sin resolver al que se hace referencia en la función HB_FUN_CURL_EASY_GETINFO
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_getdate sin resolver al que se hace referencia en la función HB_FUN_CURL_GETDATE
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_version_info sin resolver al que se hace referencia en la función HB_FUN_CURL_VERSION_INFO
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_easy_strerror sin resolver al que se hace referencia en la función HB_FUN_CURL_EASY_STRERROR
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_easy_pause sin resolver al que se hace referencia en la función HB_FUN_CURL_EASY_PAUSE
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_easy_init sin resolver al que se hace referencia en la función HB_FUN_CURL_EASY_DUPLICATE
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_easy_setopt sin resolver al que se hace referencia en la función HB_FUN_CURL_EASY_SETOPT
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_easy_perform sin resolver al que se hace referencia en la función HB_FUN_CURL_EASY_PERFORM
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_easy_cleanup sin resolver al que se hace referencia en la función PHB_CURL_free
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_easy_getinfo sin resolver al que se hace referencia en la función HB_FUN_CURL_EASY_GETINFO
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_easy_duphandle sin resolver al que se hace referencia en la función HB_FUN_CURL_EASY_DUPLICATE
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_easy_reset sin resolver al que se hace referencia en la función PHB_CURL_free
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_easy_recv sin resolver al que se hace referencia en la función HB_FUN_CURL_EASY_RECV
hbcurl.lib(core.obj) : error LNK2019: símbolo externo __imp_curl_easy_send sin resolver al que se hace referencia en la función HB_FUN_CURL_EASY_SEND
Verhoven wrote:Gracias Antonio.
Le he añadido libcurl.lib y genera el exe, pero al arrancar el programa me da el error:
La ejecución de código no puede continuar porque no se encontró libcurl.dll
He tratado de encontrarla en la versión de Harbour para MSVC 2022 pero no está. Por otro lado me gustaría no depender de dll externas.
No se si esto sería posible.
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: D.Fernandez and 27 guests