• Este debate tiene 2 respuestas, 3 mensajes y ha sido actualizado por última vez el hace 4 años, 3 meses por pedperpat.
Viendo 3 entradas - de la 1 a la 3 (de un total de 3)

Imagenes blob



  • Leasba Consulting
    Participante
    Leasba Consulting

    Buenos días, estoy intentando insertar una imagen que viene por url en un campo de tipo blob. Para hacer esto estoy utilizando dos campos de tipo blob, en uno guardo la url de la imagen y en el otro tendría que guardar la imagen. ¿Como podria guardar la imagen en ese campo blob?

    Un saludo!

    #13389

    Cristina Nicolàs
    Superadministrador
    Cristina Nicolàs

    Hola,

    De memoria no te se decir, pero yo en estos casos lo que hago es ver como el estándar lo hace y copiarlo.
    Temas de imágenes tienes en la ficha del producto, en la ficha del cliente y en la información empresa. Yo buscaría en estos tres sitios a ver si encuentro el código que me permita cargar una imagen.

    Un saludo,
    Cristina Nicolàs

    #13393

    pedperpat
    Participante
    pedperpat

    Buenos días,

     

    He estado mirando y lo que he visto es que mediante variables de tipo automation se puede convertir el texto de la url a imagen de tipo blob, creo que lo que estás intentando lograr se puede con la siguiente función:

     

    fnDownloadImage(‘http://static.adzerk.net/Advertisers/5fa811fa1a3e40f1a3435478bd1364a0.png’,’C:\Dummy\p.png’,1);

    function name : fnDownloadImage
    Var Name DataType Subtype Length
    No ptxtUrl Text 1024
    No ptxtSaveAsFileName Text 1024
    No poptSaveAsOption Option

    Name DataType Subtype Length
    atXMLHTTP30 Automation ‘Microsoft XML, v3.0’.XMLHTTP30
    atAdodbStream Automation ‘Microsoft ActiveX Data Objects 6.1 Library’.Stream
    IF STRLEN(ptxtUrl) = 0 THEN
    EXIT(FALSE);

    CREATE(atXMLHTTP30,FALSE,TRUE);
    atXMLHTTP30.open(‘GET’, ptxtUrl,FALSE);
    atXMLHTTP30.setRequestHeader(‘Content-type’,’image/png’);
    atXMLHTTP30.send;

    CASE atXMLHTTP30.status OF
    200: BEGIN
    CREATE(atAdodbStream,FALSE,TRUE);
    atAdodbStream.Type := 1; // adTypeBinary
    atAdodbStream.Open;
    atAdodbStream.Write(atXMLHTTP30.responseBody);
    atAdodbStream.SaveToFile(ptxtSaveAsFileName,poptSaveAsOption + 1); // adSaveCreateNotExist = 1, adSaveCreateOverWrite = 2
    atAdodbStream.Close;
    END;
    ELSE
    MESSAGE(‘%1’,atXMLHTTP30.statusText);
    END;

    IF NOT ISCLEAR(atAdodbStream) THEN
    CLEAR(atAdodbStream);

    IF NOT ISCLEAR(atXMLHTTP30) THEN
    CLEAR(atXMLHTTP30);

    EXIT(TRUE);

    Espero que sea útil y puedas guardar correctamente la imagen, disculpa por la identación que tiene el código.

    Un saludo.

    #13399
Viendo 3 entradas - de la 1 a la 3 (de un total de 3)

Debe iniciar sesión para responder a este tema.