simple mvc filepond example ejemplo javascript jquery jquery-plugins file-upload

javascript - mvc - la devolución de llamada al progreso siempre muestra una carga del 100% en el plugin jquery-file-upload



jquery file upload mvc (1)

Quiero implementar una barra de progreso para el complemento blueimp jquery-file-upload pero la devolución de llamada de progress solo se activa una vez inmediatamente después de que comience la carga y y data.loaded == data.total.

<input data-url="/ads/32/photos" id="image" name="image" type="file" /> $(".upload-btn input").fileupload({ dataType: "json", progress: function(e, data) { alert(data.loaded + "/" + data.total); }, done: function(e, data) { alert("done"); } });

Segundos después (cuando finaliza la carga) se activa la devolución de llamada procesada y puedo confirmar a través de los registros del servidor que la carga fue exitosa. Obtengo el mismo comportamiento cuando trato de utilizar la devolución de llamada progressall también.

No estoy seguro de si está relacionado, pero actualmente no incluyo la biblioteca jquery.fileupload-fp.js ya que al agregar eso evito que suceda ninguna actividad de carga.

¿Alguna idea de lo que estoy haciendo mal?


¿La función de progreso alert a la cadena "100%"? No estoy familiarizado con el complemento, pero la expresión en alert para la función de progress arroja todo a un tipo de String . Entonces, esperaría que muestre la cadena "x / y".

En cualquier caso, debe cambiar la función de progress a

alert( data.loaded / data.total ); // no quotes, no +''s

Si esos atributos ( total y loaded ) son correctos, entonces debería darle el comportamiento que desea.

Editar: para aclarar lo que está sucediendo, si esto responde a su pregunta: el operador + comporta de diferentes maneras según el tipo de datos de sus operandos. Si tiene + dos números juntos, funciona como un operador de suma aritmético. Si incluso uno de los operadores es una cadena, el + primero cambiará los otros operandos a cadenas primero, y luego los concatenará . El resultado final será una cadena, no un número.

var two = "2"; // two is a String data type alert(two + 2); // Returns "22" as a String var two = 2; alert(two + 2); // Returns 4

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Addition