Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

231
Visualizações
Envíe una matriz de datos binarios y escríbalos en el lado del servidor de manera eficiente

Estoy usando AJAX para enviar una serie de imágenes a un servidor y escribirlas en el lado del servidor.

Quiero que esto sea lo más eficiente posible , y estoy bastante seguro de que lo que estoy haciendo ahora es malo :

  1. Enviar los datos de la imagen como string[] no es eficiente.
  2. Usar JSON.stringify para encadenar los datos de la imagen es una mala idea.
  3. Usar Convert.FromBase64String en el lado del servidor no es eficiente.

Aquí está mi código del lado del cliente :

Esto captura la imagen de un elemento de lienzo y la agrega a una matriz:

 ctx.drawImage(video, 0, 0, canvas.width, canvas.height); imagesArr.push(canvas.toDataURL('image/jpeg', JPEG_QUALITY).replace('data:image/jpeg;base64,', ''))

Esto envía la matriz de imágenes al servidor:

 function sendImageBlock() { $.ajax({ type: "POST", url: "/AJAXServices.aspx/Upload", data: JSON.stringify({images: imagesArr }), contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) {}, error: function (xhr, status, message) {} }); }

Aquí está mi código del lado del servidor :

 [WebMethod] public static int Upload(string[] images) { int index = 0; foreach (string image in images) { File.WriteAllBytes(string.Format("{0}.jpeg", index.ToString(), Convert.FromBase64String(image)); index++; } }

¿Alguna sugerencia de cómo puedo mantener esto limpio y eficiente ? ¿Eliminar el uso del formato de string y usar datos binarios ?

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Puede usar Uint32Array junto con xhr2 (HTML5 XMLHttpRequest Level 2) para enviar sus datos en su formato binario original.

XMLHttpRequest Level 2 presenta una serie de nuevas capacidades que acaban con los hacks locos en nuestras aplicaciones web; cosas como solicitudes de origen cruzado, eventos de progreso de carga y soporte para cargar/descargar datos binarios.

Más información: https://www.html5rocks.com/en/tutorials/file/xhr2/

 (function ($) { // fetch the canvas data buffer into an Uint32Array var imageData = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height); var data= new Uint32Array(imageData.data.buffer); $.ajax({ url: 'server_address', type: 'POST', contentType: 'image/png', // set processData to false to prevent string converstion processData: false, data:data }); })(jQuery);

Los datos del blob se pueden leer en PHP de esta manera:

 <php> $data = file_get_contents('php://input'); </php>
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda