Archivos a DRIVE

8 views
Skip to first unread message

Pablo Jalabert

unread,
Dec 3, 2025, 1:03:10 PM12/3/25
to Harbour Minigui, [oohg], Grupo TodoClipper
Hola a todos, espero tengan un lindo fin de año.
Consulta: ¿Alguien a subido archivos a "DRIVE de google" a través de harbour?

Saludos
Pablo Jalabert

Hi everyone, I hope you have a wonderful end to the year.
Question: Has anyone uploaded files to Google Drive using Harbour?

Regards,
Pablo Jalabert

Ciro Vargas C

unread,
Dec 3, 2025, 5:45:17 PM12/3/25
to oo...@googlegroups.com, Harbour Minigui, Grupo TodoClipper
No. Lo le probado pero parece tnrer 
Sentido 


Entiendo que prefieres no usar hbcurl. Aquí tienes alternativas para crear un programa Harbour que suba archivos a Google Drive.

📦 Alternativas a hbcurl

1. Usar la biblioteca hbtip (nativa de Harbour)

Es una buena opción que a menudo ya viene incluida con Harbour:

```clipper
#include "hbtip.ch"

PROCEDURE Main()
    LOCAL oHttp
    LOCAL cToken := "TU_ACCESS_TOKEN_AQUI"
    LOCAL cFile := "archivo.txt"
    LOCAL cResponse
    LOCAL hHeaders
    
    // Configurar encabezados HTTP
    hHeaders := { ;
        "Authorization": "Bearer " + cToken, ;
        "Content-Type": "application/octet-stream" ;
    }
    
    // Crear cliente HTTP
    oHttp := TIPClientHTTP():new( ;
    
    // Configurar encabezados
    FOR EACH cHeader IN hHeaders
        oHttp:hFields[ cHeader:__enumKey ] := cHeader:__enumValue
    NEXT
    
    // Subir archivo (método simple)
    IF oHttp:post( hb_MemoRead( cFile ) )
        cResponse := oHttp:result
        ? "Éxito:", cResponse
    ELSE
        ? "Error:", oHttp:lastErrorMessage()
    ENDIF
    
    oHttp:close()
RETURN
```

2. Usar curl externo (si está disponible en el sistema)

Puedes ejecutar curl desde Harbour:

```clipper
PROCEDURE UploadWithCurl()
    LOCAL cToken := "TU_TOKEN_AQUI"
    LOCAL cArchivo := "documento.pdf"
    LOCAL cComando
    LOCAL nResult
    
    // Construir comando curl
    cComando := 'curl -X POST ' + ;
                '-H "Authorization: Bearer ' + cToken + '" ' + ;
                '-H "Content-Type: application/octet-stream" ' + ;
                '--data-binary "@' + cArchivo + '"'
    
    // Ejecutar curl
    nResult := hb_ProcessRun( cComando )
    
    IF nResult == 0
        ? "Archivo subido exitosamente"
    ELSE
        ? "Error en la subida"
    ENDIF
RETURN
```

3. Usar PowerShell en Windows (alternativa nativa)

```clipper
PROCEDURE UploadWithPowerShell()
    LOCAL cScript, cTempFile
    
    // Crear script PowerShell temporal
    cScript := ;
        "$token = 'TU_TOKEN_AQUI'; " + ;
        "$headers = @{ Authorization = 'Bearer ' + $token }; " + ;
        "$file = 'C:\\ruta\\archivo.txt'; " + ;
        "Invoke-RestMethod -Uri 'https://www.googleapis.com/upload/drive/v3/files?uploadType=media' " + ;
        "-Method Post -Headers $headers -InFile $file -ContentType 'application/octet-stream'"
    
    // Guardar script temporal
    cTempFile := hb_FtempCreate()
    hb_MemoWrit( cTempFile + ".ps1", cScript )
    
    // Ejecutar PowerShell
    hb_ProcessRun( "powershell -ExecutionPolicy Bypass -File " + cTempFile + ".ps1" )
    
    // Limpiar
    FErase( cTempFile + ".ps1" )
RETURN
```

🔐 Simplificando la Autenticación

Si el proceso de OAuth 2.0 es complejo, considera:

1. Token manual: Obtén un token desde la Consola de OAuth 2.0 Playground (para pruebas)
2. Cuenta de servicio: Para automatización server-to-server:

```clipper
// Con cuenta de servicio (archivo JSON)
FUNCTION GetServiceAccountToken( cKeyFile )
    LOCAL cCommand
    LOCAL cToken := ""
    
    // Usando gcloud CLI (si está instalado)
    cCommand := 'gcloud auth print-access-token --key-file=' + cKeyFile
    cToken := hb_ProcessRun( cCommand, @cToken )
    
    RETURN cToken
```

📊 Comparación de métodos

Método Ventajas Desventajas
hbtip Nativo de Harbour, sin dependencias externas Documentación limitada
curl externo Muy confiable, ampliamente usado Requiere curl instalado
PowerShell Ideal para entornos Windows puros Solo funciona en Windows

💡 Recomendación práctica

Para un proyecto serio, te sugiero:

1. Para máxima compatibilidad: Usa hbtip si puedes resolver la autenticación
2. Para rapidez de desarrollo: Usa curl externo con tokens manuales para pruebas
3. Para producción Windows: Considera PowerShell con cuentas de servicio

Saludos 

Ciro

--
Has recibido este mensaje porque estás suscrito al grupo "[oohg]" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a oohg+uns...@googlegroups.com.
Para ver este debate, visita https://groups.google.com/d/msgid/oohg/CAGRnY3TTajOq0nJj-p5a9FLjA%2B-o%3DbspGR98RAaCHmLCjy-i5w%40mail.gmail.com.
Reply all
Reply to author
Forward
0 new messages