Campo BLOB

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
helio
Usuário Nível 3
Usuário Nível 3
Mensagens: 175
Registrado em: 04 Ago 2004 10:36
Localização: São Bento do Una-PE
Contato:

Campo BLOB

Mensagem por helio »

Pessoal estou com um problema e o seguinte utilizo SQLRDD com FIREBIRD e XHARBOUR 0.99.7 e gostaria de saber como posso colocar um figura em JPG no campo BLOB.

Obrigado antecipadamente pela forca,

Helio Beltrao Jr.
helio@hrbinfo.com.br
Helio Beltrao Jr.
msn: helio@htisistemas.com
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Campo BLOB

Mensagem por sygecom »

Tente assim:

Para Gravar:

Código: Selecionar todos

cFile:=memoread("foto.jpg")
cContent := strtohex(cFile)
replace campo with cContent
Para Ler o campo gravado:

Código: Selecionar todos

cFile := campo
memowrit('meuarquivo',hextostr(cFile))
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
helio
Usuário Nível 3
Usuário Nível 3
Mensagens: 175
Registrado em: 04 Ago 2004 10:36
Localização: São Bento do Una-PE
Contato:

Re: Campo BLOB

Mensagem por helio »

Valeu Leonardo pela forca vou fazer uns teste.
Helio Beltrao Jr.
msn: helio@htisistemas.com
rodrmigu
Usuário Nível 3
Usuário Nível 3
Mensagens: 150
Registrado em: 27 Nov 2007 15:13
Localização: Indaiatuba SP

Re: Campo BLOB

Mensagem por rodrmigu »

Olá,

Tenho usado algo parecido com o código do Leonardo mas para postgres com blob. So que ao invés de usar memoread/strtohex/memowrit/hextostr, uso o encode da Base64 que é o mesmo usado em arquivos binários enviados por html, etc:

Código: Selecionar todos

Function Base64Decode( cFile, cData )
    Local oEncoder
    Local nHandle
    Local result := .t.

    oEncoder := TIPEncoder():New( "base64" )

    if (nHandle := FCreate(cFile)) != -1
        cData := oEncoder:Decode(cData)
        FWrite(nHandle, cData)
        FClose(nHandle)
    else
        result := .f.
    endif
return result


Function Base64Encode( cFile, cData )
    Local oEncoder
    Local cBuffer := Space(1024)
    Local nHandle
    Local nLen
    Local result := .t.

    oEncoder := TIPEncoder():New( "base64" )

    if (nHandle := FOpen(cFile)) != -1
        cData := ""
        nLen := FRead( nHandle, @cBuffer, 1024 )

        do while nLen > 0
            if nLen < 1024
                cData += Substr( cBuffer, 1, nLen )
            else
                cData += cBuffer
            endif
            nLen := FRead( nHandle, @cBuffer, 1024 )
        enddo

        cData := oEncoder:Encode(cData)
        FClose(nHandle)
    else
        result := .f.
    endif
return result
[]'s
Rodrigo
allan_de_sa
Usuário Nível 1
Usuário Nível 1
Mensagens: 13
Registrado em: 24 Mai 2011 20:23
Localização: SAO PAULO

Campo BLOB

Mensagem por allan_de_sa »

Olá Rodrigo,

Poderia dar um exemplo de como faz para gravar binários no postgres usando as funções citadas acima ?

Obrigado,
Allan
Responder