Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

124
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!