none
WebServices API Rest, Almacenar una imagen base64 en la base datos RRS feed

  • Pregunta

  • Hola. ahora con el metodo Post de Clientes me solicitaron que me enviaran una imagen en Base64 la cual mi api tiene que recepcionarla y almacenarlo en tabla de clientes o guardarlos en un archivo. favor me podrian ayudar como lo realizo.

    Saludos.

    Modelo:

    sing System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;

    namespace WebApiEchange.Models.WS
    {
        public class Clientes
        {
            public string Sessionkey { get; set; }
            public string ApePaterno { get; set; }
            public string ApeMaterno { get; set; }
            public string Nombres { get; set; }
            public string Direccion { get; set; }
            public string Localidad { get; set; }
            public string Ciudad { get; set; }
            public string Referencia { get; set; }
            public string IdPais { get; set; }
            public string FhaNacimiento { get; set; }
            public string IdDocIde { get; set; }
            public string NroDocIde { get; set; }
            public string Sexo { get; set; }
            public string IdLugTlf1 { get; set; }
            public string NroTlfUno { get; set; }
            public string Email { get; set; }
            public string NombreBco { get; set; }
            public string PlazaBco { get; set; }
            public string TipCtaBco { get; set; }
            public string NroCtaBco { get; set; }
            public string NroRutaBco { get; set; }
            public string IdOcuOficio { get; set; }
            public string IdPaisNacion { get; set; }
        }
    }

    Logica del Negocio 

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Data;
    using System.Data.SqlClient;

    namespace WebLogica.Clases
    {
        public class clsClientes
        {
            string stConexion = "";
            SqlCommand sqlCommand = null;
            SqlConnection sqlConnection = null;
            SqlDataAdapter sqlDataAdapter = null;
           public clsClientes()
            {
                clsConexion obclsConexion = new clsConexion();
                stConexion = obclsConexion.stGetConexion();
            }
           public DataSet stClientes(string wToken, string wApePaterno, string wApeMaterno, string wNombres, string wDireccion, string wLocalidad,
                                     string wCiudad, string wReferencia, string wIdPais, string wFhaNacimiento, string wIdDocIde, string wNroDocIde,
                                     string wSexo, string wIdLugTlf1, string wNroTlfUno, string wEmail, string wNombreBco, string wPlazaBco, 
                                     string wTipCtaBco, string wNroCtaBco, string wNroRutaBco,string wIdOcuOficio, string wIdPaisNacion)
           {
               try
               {
                   DataSet dsConsulta = new DataSet();
                   sqlConnection = new SqlConnection(stConexion);
                   sqlConnection.Open();

                   sqlCommand = new SqlCommand("PA_WebApiClientes", sqlConnection);
                   sqlCommand.CommandType = CommandType.StoredProcedure;

                   sqlCommand.Parameters.Add(new SqlParameter("@Token", wToken));
                   sqlCommand.Parameters.Add(new SqlParameter("@ApePaterno", (wApePaterno.ToUpper()).Trim()));
                   sqlCommand.Parameters.Add(new SqlParameter("@ApeMaterno", (wApeMaterno.ToUpper()).Trim()));
                   sqlCommand.Parameters.Add(new SqlParameter("@Nombres", (wNombres.ToUpper()).Trim()));
                   sqlCommand.Parameters.Add(new SqlParameter("@Direccion", (wDireccion.ToUpper()).Trim()));
                   sqlCommand.Parameters.Add(new SqlParameter("@Localidad", (wLocalidad.ToUpper()).Trim()));
                   sqlCommand.Parameters.Add(new SqlParameter("@Ciudad", (wCiudad.ToUpper()).Trim()));
                   sqlCommand.Parameters.Add(new SqlParameter("@Referencia", (wReferencia.ToUpper()).Trim()));
                   sqlCommand.Parameters.Add(new SqlParameter("@IdPais", wIdPais));
                   sqlCommand.Parameters.Add(new SqlParameter("@FhaNacimiento", wFhaNacimiento));
                   sqlCommand.Parameters.Add(new SqlParameter("@IdDocIde", wIdDocIde));
                   sqlCommand.Parameters.Add(new SqlParameter("@NroDocIde", (wNroDocIde.ToUpper()).Trim()));
                   sqlCommand.Parameters.Add(new SqlParameter("@Sexo", (wSexo.ToUpper())));
                   sqlCommand.Parameters.Add(new SqlParameter("@IdLugTlf1", wIdLugTlf1));
                   sqlCommand.Parameters.Add(new SqlParameter("@NroTlfUno", wNroTlfUno.Trim()));
                   sqlCommand.Parameters.Add(new SqlParameter("@Email", (wEmail.ToLower()).Trim()));
                   sqlCommand.Parameters.Add(new SqlParameter("@NombreBco", (wNombreBco.ToUpper()).Trim()));
                   sqlCommand.Parameters.Add(new SqlParameter("@PlazaBco", (wPlazaBco.ToUpper()).Trim()));
                   sqlCommand.Parameters.Add(new SqlParameter("@TipCtaBco", (wTipCtaBco.ToUpper()).Trim()));
                   sqlCommand.Parameters.Add(new SqlParameter("@NroCtaBco", (wNroCtaBco.ToUpper()).Trim()));
                   sqlCommand.Parameters.Add(new SqlParameter("@NroRutaBco", (wNroRutaBco.ToUpper()).Trim()));
                   sqlCommand.Parameters.Add(new SqlParameter("@IdOcuOficio", wIdOcuOficio));
                   sqlCommand.Parameters.Add(new SqlParameter("@IdPaisNacion", wIdPaisNacion));
                   sqlCommand.Parameters.Add(new SqlParameter("@Tipo", "10"));

                   sqlDataAdapter = new SqlDataAdapter(sqlCommand);
                   sqlDataAdapter.Fill(dsConsulta);

                   return dsConsulta;
               }
               catch (Exception ex) { throw ex; }
               finally { sqlConnection.Close(); }
           }

    Controlador

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Net.Http;
    using System.Web.Http;
    using System.Data;
    using WebApiEchange.Models.WS;

    namespace WebApiEchange.Controllers
    {
        public class ClientesController : ApiController
        {
            [HttpPost]
            public Reply Clientes([FromBody]Clientes model)
            {
                Reply oR = new Reply();
                try
                {
                    WebLogica.Clases.clsClientes obclsConsulta = new WebLogica.Clases.clsClientes();
                    DataSet dsConsulta = obclsConsulta.stClientes(model.Sessionkey, model.ApePaterno, model.ApeMaterno, model.Nombres, model.Direccion,
                                                                  model.Localidad, model.Ciudad, model.Referencia, model.IdPais,
                                                                  model.FhaNacimiento, model.IdDocIde, model.NroDocIde, model.Sexo,
                                                                  model.IdLugTlf1, model.NroTlfUno, model.Email, model.NombreBco,
                                                                  model.PlazaBco, model.TipCtaBco, model.NroCtaBco, model.NroRutaBco,
                                                                  model.IdOcuOficio, model.IdPaisNacion);

                    if (dsConsulta.Tables[0].Columns[0].ToString() == "Status")
                    {
                        oR.status = dsConsulta.Tables[0].Rows[0][0].ToString();
                        oR.message = dsConsulta.Tables[0].Rows[0][1].ToString();
                        oR.result = dsConsulta.Tables[0].Rows[0][2].ToString();
                    }
                    else
                    {
                        if (dsConsulta.Tables[0].Columns[0].ToString() == "Message")
                        {
                            oR.status = "17";
                            oR.message = "Failure";
                            oR.result = dsConsulta;
                        }
                        else
                        {
                            oR.status = "00";
                            oR.message = "Success";
                            oR.result = dsConsulta;
                       }
                    }
                }
                catch (Exception ex)
                {
                    oR.status = "99";
                    oR.message = "Failure";
                    oR.result = ex.ToString();
                }
                return oR;
            }

    • Editado Cargiosys viernes, 22 de febrero de 2019 11:54
    viernes, 22 de febrero de 2019 11:42

Todas las respuestas

  • hola

    Si estas usando una tecnologia como son las webapi de asp.net mvc prque sigues usando DataSet? eso atras

    deberias crear clases que mapeen con los datos y devolver entidades y List<>, no mas dataset

    >>me solicitaron que me enviaran una imagen en Base64 la cual mi api tiene que recepcionarla y almacenarlo en tabla de clientes

    una imagen en base64 es basicamente un string, solo debes definir la propiedad

    public class Clientes
    {
    
        //resto propiedades
    
        public string Imagen {get;set;}
    
    }

    para guardarla podrias definir una columna en la tabla del tipo varbinary y obtener el byte[] usando

       byte[] img = Convert.FromBase64String(model.Imagen);

    despeus solo queda que pases el byte[] por parametro y se inserte en la columna

    o si quieres un archivo solo usas File.WriteAllBytes()

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 22 de febrero de 2019 13:25