Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

126
Vistas
La carga de archivos usando jquery ajax progresa en su mayoría siempre devolviendo el 100 por ciento

He buscado durante horas y probado más cosas de las que puedo contar con ambas manos. Pero, esto me está desconcertando.

Estoy tratando de mostrar el progreso de carga al cargar un archivo. Estoy usando el método jQuery ajax para hacer esto mientras agrego un detector de eventos para el progreso. La carga funciona bien y se carga sin ningún problema. Sin embargo, el progreso siempre está en 100 desde el principio. La única excepción a esto es si presiono el botón de carga repetidamente en una sucesión rápida, en cuyo caso parece mostrar un progreso. A veces, este progreso será del 50% y luego del 100% en un segundo en un archivo de 25 MB, por lo que no estoy seguro de que sea un progreso real. Otras veces parece que muestra un progreso real.

También probé un enfoque de JavaScript puro y los resultados son exactamente los mismos.

Cualquier ayuda para ayudar a identificar por qué sucede esto sería muy apreciada.

upload_handler.js

 $('#upload_form').submit(function(event){ event.preventDefault(); var form = $('#upload_form')[0]; var fd = new FormData(form); $.ajax({ xhr: function() { var xhr = new window.XMLHttpRequest(); xhr.upload.addEventListener("progress", function(evt) { var percent = (evt.loaded / evt.total) * 100; console.log(percent); }, false); return xhr; }, url: "https://example.com/upload_file.php", method: "POST", data: fd, contentType: false, processData: false, }) .done(function(){ console.log('Done'); }) .fail(function(){ console.log('Fail'); }) .always(function(){ console.log('Always'); }); })

Salida de consola

Cuando se envía el formulario, la consola leerá:

100 : esto se muestra inmediatamente cuando se envía el formulario

Listo : esto se muestra un par de segundos después de enviar el formulario

Siempre : se muestra inmediatamente después de Listo .

cargar_archivo.php

 <?php $file = $_FILES['file_upload']; $file_dir = __DIR__ . '/test_uploads/'; if( is_dir( $file_dir ) === false ) { mkdir( $file_dir, 0755 ); } $file_path = "{$file_dir}{$file['name']}"; if( move_uploaded_file( $file['tmp_name'], $file_path ) ) { error_log("File uploaded to {$file_path}"); echo 'success'; } else { error_log("Failed to upload file to {$file_path}"); echo 'failed'; }

EDITAR

  1. Los archivos anteriores están en un servidor. Por lo tanto, no esperaría que un archivo de 25 mb se cargue instantáneamente cuando el archivo se origina en mi computadora (no pago por ese tipo de Internet...)
  2. La carga de archivos más grandes de 2 gb muestra el progreso. ¿Hay alguna forma de obtener estos tamaños de archivo más pequeños para mostrar el progreso?
about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda