none
Enviar archivo Base64 RRS feed

  • Pregunta

  •  

    Intento hacer una utilidad para caturar una foto en Android caturo la foto con

    <input type="file" name="foto" id="foto" class="SubirFoto" accept="image/*" capture="camera" />

    
    


    luego la envio al server con un boton mediante:

    <script src="Scripts/jquery-1.4.1.min.js"></script>
             <script>
    
                 // Send the drawn image to the server
                 $('#sendBtn').live('click', function () {
                     var Pic = document.getElementById("foto");
                    
                     Pic=getBase64(Pic);
    
                     // Sending the image data to Server
                     $.ajax({
                         type: 'POST',
                         url: 'Default2.aspx/UploadPic',
                         data: '{ "imageData" : "' + Pic + '" }',
                         contentType: 'application/json; charset=utf-8',
                         dataType: 'json',
                         success: function (msg) {
                             // alert("Correcto, firma grabada.");
                             window.location.href = "Default.aspx";
                         }
                     });
                 });
                 function getBase64(file) {
                     var reader = new FileReader();
                     reader.readAsDataURL(file);
                     reader.onload = function () {
                         console.log(reader.result);
                     };
                     reader.onerror = function (error) {
                         console.log('Error: ', error);
                     };
                 }
                  </script>

    por ultimo la recojo en aspx con:

     [WebMethod()]
        public static void UploadPic(string imageData)
        {
            //string v = HttpContext.Current.Session("User");
            string Pic_Path = HttpContext.Current.Server.MapPath("img.png");
            using (FileStream fs = new FileStream(Pic_Path, FileMode.Create))
            {
                using (BinaryWriter bw = new BinaryWriter(fs))
                {
                    byte[] data = Convert.FromBase64String(imageData);
                    bw.Write(data);
                    bw.Close();
                }
            }


    Sin embargo no consigo que pase bien, si no entendi mal la captura de la camara ya esta en base64 pero me al pasar me da el error

    y si convierto a base64 con la funcion getBase64 me da este otro:



    • Editado Cid_95 sábado, 22 de julio de 2017 10:23
    sábado, 22 de julio de 2017 10:19

Respuestas

  • Fíjate que estás tomando los datos con "readAsDataUrl". Esto te devuelve un DataUrl, que tiene un prefijo por delante de los propios datos en Base64. Tendrás que "recortar" el string para quitarle ese prefijo para dejar solo los datos de Base 64 antes de pasárselos al Convert.FromBase64.
    • Propuesto como respuesta Cid105 lunes, 24 de julio de 2017 15:34
    • Marcado como respuesta Moderador MModerator viernes, 28 de julio de 2017 18:22
    sábado, 22 de julio de 2017 11:00