none
Como Pasar una imagen en Bytes[] a string y viceversa RRS feed

  • Pregunta

  • Buenos dias a todos.

    Mi procedimiento actual consta de que mediante al control ASP FileUpload recojo la imagen y la tranformo en Bytes[] luego esto lo envio a la invocacion de un SP de INSERT en SQL Server que espera dicha imagen en un campo VARBINARY(MAX) posteriormente mediante un SP de Select recojo la imagen, la paso a Bystes hago lo siguiente:

       string base64String = Convert.ToBase64String(bytes, 0, bytes.Length);
       Dtbase64Row["FOTO"] = "data:image/png;base64," + base64String;

    Esto me permite luego de que la img la pueda mostrar obviamete un control ASP Imagen.

    ahora bien, mi problema esta cuando por circunstacia de la vida en base de datos ya no tengo un camo Varbinary(max) si no Varchar(max) y obviamente no puedo hacerle un Alter ya q destruiria la funcionalidad original de la tabla.

    mi pregunta es:

    como guardar una imagen en Bytes[] cacturada previamente en ASP FileUpload e insertarla en un campo Varchar(max) y luego mostrarla al cliente?

    gracias

    C# Sql Server 

    lunes, 14 de marzo de 2016 14:51

Respuestas

  • >>obviamente no puedo hacerle un Alter ya q destruiria la funcionalidad original de la tabla.

    pero sino puede cambiar la estuctura de la tabla entonces como pasarias a tener ese campo como varchar ?

    o sea seguiria siendo un varbinary con lo cual tienes que seguir insertando un byte[]

    >>como guardar una imagen en Bytes[] cacturada previamente en ASP FileUpload e insertarla en un campo Varchar(max)

    pero esto ya sabes como hacerlo, tomas el byte[] que ingresa en el fileupload y le aplicas el Convert.ToBase64String() para tener el string que insetarias en la tabla

    >>luego mostrarla al cliente?

    mostrarlo al cliente seria directo como ya lo vienes realizando, solo que no necesitaras usar el  Convert.ToBase64String()

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 14 de marzo de 2016 15:59

Todas las respuestas

  • debes entonces convertir el array de bytes a Base64 para almacenarlo en tu campo varchar.

    para ello puedes usar

    Convert.ToBase64String(Byte[])


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    lunes, 14 de marzo de 2016 15:00
    Moderador
  • >>obviamente no puedo hacerle un Alter ya q destruiria la funcionalidad original de la tabla.

    pero sino puede cambiar la estuctura de la tabla entonces como pasarias a tener ese campo como varchar ?

    o sea seguiria siendo un varbinary con lo cual tienes que seguir insertando un byte[]

    >>como guardar una imagen en Bytes[] cacturada previamente en ASP FileUpload e insertarla en un campo Varchar(max)

    pero esto ya sabes como hacerlo, tomas el byte[] que ingresa en el fileupload y le aplicas el Convert.ToBase64String() para tener el string que insetarias en la tabla

    >>luego mostrarla al cliente?

    mostrarlo al cliente seria directo como ya lo vienes realizando, solo que no necesitaras usar el  Convert.ToBase64String()

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 14 de marzo de 2016 15:59