79262952

Date: 2024-12-08 17:09:23
Score: 4
Natty:
Report link

El código de cliente que finalmente ha funcionado es el siguiente.

async function exportarCanvasF1(nombrearchivo, start_) {       

let start = Number(start_);
        var chunkSize = 30000; // size of each chunk
        let start_limite = (start == 0 ? Number(start_) : 

Number(start_)) + chunkSize;      

 if (start_limite > dataURL.length) {
     start_limite = (start_limite - (start_limite -  dataURL.length - 1));
  }
 if (Number(start) + chunkSize > dataURL.length) {
    chunkSize = chunkSize - ((Number(start) + chunkSize) - dataURL.length) + 1;           }
            
  let dataURL_;
    
   if (Number(start) < dataURL.length) {           

   dataURL_ = dataURL.substr(start, chunkSize);
   **dataURL_ = encodeURIComponent(dataURL_);**
               
   $.ajax({               

   type: "POST",
   url: "Respuestaajax.aspx/Respuestaaj",
   contentType: "application/json; charset=utf-8",
   data: 

'{"parametro":"funcion","valor":"TroceadoFileBase64","tabla":"' + dataURL_ + '","campo":"' + nombrearchivo + '","criterio":"' + start_limite + '","v1":""}',
   dataType: "json",
   success: function (devolucion) {
     if (devolucion.d) {
       var d = JSON.parse(devolucion.d);
       exportarCanvasF1(d[0][1], d[1][1]);
           }
    },
     error: function (req, status, error) {
                    }
                });
     }
  else if (!Number(start) < dataURL.length) {
      dataURL_ = dataURL.substr(start, chunkSize);
      console.log("Length chunk: " + dataURL_.length);
      **dataURL_ = encodeURIComponent(dataURL_);**
                
       $.ajax({
         type: "POST",
         url: "Respuestaajax.aspx/Respuestaaj",
         contentType: "application/json; charset=utf-8",
         data: 
        '{"parametro":"funcion","valor":"TroceadoFileBase64","tabla":"' + 
        dataURL_ + '","campo":"' + nombrearchivo + '","criterio":"' + 
        start_limite + '","v1":""}',
         dataType: "json",
         success: function (devolucion) {
         if (devolucion.d) {
            var d = JSON.parse(devolucion.d);
                 $.ajax({
                  type: "POST",
                  url: "Respuestaajax.aspx/Respuestaaj",
                  contentType: "application/json; charset=utf-8",
                 data: '{"parametro":"funcion","valor":"TroceadoFileBase64_fin","tabla":"' + nombrearchivo + '","campo":"","criterio":"","v1":""}',
                 dataType: "json",
                 success: function (devolucion) {
                     if (devolucion.d) {
                                    }
                     },
                      error: function (req, status, error) {                                    
                                }
                            });
                        }
                    },
                    error: function (req, status, error) {
                     alert("No hubo respuesta desde el servidor. Prueba otra vez.");
                    }
                });
    
            }
        }

Y el de cliente:

public string TroceadoFileBase64(string base64file, string nombrefile, string start)
        {
    string jsonDevolucion = "";
           
  
   **string base64filedec1 = HttpUtility.UrlDecode(base64file);**  
                                                                               
    byte[] b = null;
    System.Text.ASCIIEncoding codificador = new 
    System.Text.ASCIIEncoding();
    b = codificador.GetBytes(base64filedec1);

    CrearfiledesdeArray(b, nombrefile);

     string[,] devolucion = new string[2, 2]; // 2 bloques de 2 datos                
                devolucion[0,0] = "nombrefile";
                devolucion[0,1] = nombrefile;
                devolucion[1,0] = "start";
                devolucion[1,1] = start;
                
     jsonDevolucion = JsonConvert.SerializeObject(devolucion);

     return jsonDevolucion;
}
               
public string TroceadoFileBase64_fin(string nombrefile)
        {
               
                string strtextfile = File.ReadAllText((string)HttpContext.Current.Server.MapPath("~") + "google/archivoseditados/" + Left(nombrefile, nombrefile.Length - 4) + ".txt");

                int mod4 = strtextfile.Length % 4;
                if (mod4 > 0)
                {
                    strtextfile += new string('=', 4 - mod4);
                }

                byte[] b = null;

                b = Convert.FromBase64String(strtextfile);

                File.WriteAllBytes((string)HttpContext.Current.Server.MapPath("~") + "google/archivoseditados/" + nombrefile, b);

                return "Finalizado";
        }

public void CrearfiledesdeArray(Byte[] array, string nombrefile)
        {
                FileStream fs = new FileStream((string)HttpContext.Current.Server.MapPath("~") + "google/archivoseditados/" + Left(nombrefile, nombrefile.Length - 4) + ".txt", FileMode.Append);
                fs.Seek(0, SeekOrigin.End);
                fs.Write(array, 0, array.Length);
                fs.Flush();
                fs.Dispose();
          
        }
   
Reasons:
  • Blacklisted phrase (2): código
  • Blacklisted phrase (2): Crear
  • Long answer (-1):
  • Has code block (-0.5):
  • Self-answer (0.5):
  • Low reputation (1):
Posted by: Manuel Cera Vera