usuario una registro progressbar progreso poner para online hacer formulario con como colocar bootstrap barra php upload progress-bar

una - Subir barra de progreso en PHP



como poner una barra de progreso en blogger (12)

Acabo de encontrar Mega Upload ( http://www.raditha.com/php/progress.php ) que utiliza Perl para cargar y mostrar una barra de progreso.

¿Alguien sabe cómo obtener una barra de progreso para una carga en php? Estoy intentando escribir código para un cargador de álbum de fotos. Me gustaría que se muestre una barra de progreso mientras se cargan las fotos.

Soy bastante nuevo en PHP, así que no sé nada al respecto.


Debería usar Javascript para crear una barra de progreso. Una simple búsqueda en Google me llevó a este artículo: WebAppers Simple Javascript Progress Bar con CSS .

El widget de barra de progreso de carga de archivos Dojo es otra opción que utiliza el marco de Dojo Javascript.

EDITAR: Asumiendo que cargues una gran cantidad de imágenes (como un álbum de fotos) y POSTING a tu script PHP, podrías usar javascript para leer los resultados de la publicación y actualizar la barra de progreso según la cantidad de imágenes cargadas / cantidad total de imágenes. Esto tiene el efecto secundario de solo actualizarse después de que se haya completado cada publicación. Consulte here para obtener información sobre cómo publicar con JS.


Esto es por mucho (después de horas de búsqueda de Google y secuencias de comandos) el más fácil de configurar y mejor cargador que he encontrado

https://github.com/FineUploader/fine-uploader

No requiere APC ni ninguna otra biblioteca externa de PHP, puedo obtener comentarios sobre el progreso del archivo en un host compartido, y dice que admite html5 arrastrar y soltar (no probado personalmente) y varias cargas de archivos.


Gears y HTML5 tienen un evento de progreso en el objeto HttpRequest para enviar una carga de archivo a través de AJAX.

http://developer.mozilla.org/en/Using_files_from_web_applications

Sus otras opciones ya respondidas por otros son:

  1. Uploader basado en Flash
  2. Uploader basado en Java.
  3. Una segunda solicitud comet-style al servidor web o una secuencia de comandos para informar el tamaño de los datos recibidos. Algunos servidores web como Lighttpd proporcionan módulos para hacer esto en el proceso para ahorrar la sobrecarga de llamar a un script o proceso externo.

Técnicamente hay una cuarta opción, similar a la carga de YouTube, con Gears o HTML5 puedes usar blobs para dividir un archivo en trozos pequeños y subir cada porción individualmente. Al completar cada fragmento puede actualizar el estado de progreso.


HTML5 introdujo una API de carga de archivos que le permite monitorear el progreso de las cargas de archivos, pero para los navegadores más antiguos, hay que plupload un marco que específicamente se creó para monitorear las cargas de archivos y brindar información sobre ellos. además tiene muchas devoluciones de llamadas por lo que puede funcionar en todos los navegadores


La implementación de la barra de progreso de carga es fácil y no requiere ninguna extensión adicional de PHP, JavaScript o Flash. Pero necesitas PHP 5.4 y más nuevo .

Debe habilitar la recopilación de la información de progreso de carga configurando la directiva session.upload_progress.enabled en On en php.ini .

Luego agregue una entrada oculta al formulario de carga de HTML justo antes de cualquier otra entrada de archivo. El name del atributo HTML de esa entrada oculta debe ser el mismo que el valor de la directiva session.upload_progress.name de php.ini (eventualmente precedida por session.upload_progress.prefix ). El atributo de value depende de usted, se usará como parte de la clave de sesión.

El formulario HTML podría ser así:

<form action="upload.php" method="POST" enctype="multipart/form-data"> <input type="hidden" name="<?php echo ini_get(''session.upload_progress.prefix'').ini_get(''session.upload_progress.name''); ?>" value="myupload" /> <input type="file" name="file1" /> <input type="submit" /> </form>

Cuando envíe este formulario, PHP debe crear una nueva clave en la estructura superglobal $_SESSION que se completará con la información de estado de carga. La clave es el name y el value concatenados de la entrada oculta.

En PHP puede echar un vistazo a la información de carga poblada:

var_dump($_SESSION[ ini_get(''session.upload_progress.prefix'') .ini_get(''session.upload_progress.name'') .''_myupload'' ]);

El resultado será similar al siguiente:

$_SESSION["upload_progress_myupload"] = array( "start_time" => 1234567890, // The request time "content_length" => 57343257, // POST content length "bytes_processed" => 54321, // Amount of bytes received and processed "done" => false, // true when the POST handler has finished, successfully or not "files" => array( 0 => array( "field_name" => "file1", // Name of the <input /> field // The following 3 elements equals those in $_FILES "name" => "filename.ext", "tmp_name" => "/tmp/phpxxxxxx", "error" => 0, "done" => false, // True when the POST handler has finished handling this file "start_time" => 1234567890, // When this file has started to be processed "bytes_processed" => 54321, // Number of bytes received and processed for this file ) ) );

Existe toda la información necesaria para crear una barra de progreso: usted tiene la información si la carga aún está en progreso, la información cuántos bytes se van a transferir en total y cuántos bytes ya se han transferido.

Para presentar el progreso de la carga al usuario, escriba una secuencia de comandos PHP distinta de la carga, que solo verá la información de carga en la sesión y la devolverá en el formato JSON, por ejemplo. Este script se puede llamar periódicamente, por ejemplo, cada segundo, usando AJAX y la información presentada al usuario.

Incluso puede cancelar la carga configurando $_SESSION[$key][''cancel_upload''] en true .

Para obtener información detallada, configuraciones adicionales y comentarios de los usuarios, consulte el manual de PHP .


Lamento decir que, a mi leal saber y entender, una barra de progreso de carga PHP pura, o incluso una barra de progreso de carga PHP / Javascript no es posible debido a cómo funciona PHP. Su mejor opción es usar alguna forma de cargador de Flash.

AFAIK Esto se debe a que su script no se ejecuta hasta que se hayan completado todos los superglobales, que incluye $ _FILES. Para cuando se llama a su script PHP, el archivo se carga por completo.

EDITAR: Esto ya no es verdad. Fue en 2010.


Otro cargador JS completo: http://developers.sirika.com/mfu/

  • Es gratis (licencia BSD)
  • Internacionalizable
  • compatible con navegador cruzado
  • usted tiene la opción de instalar APC o no (barra de progreso inferior a la barra de progreso determinada VS)
  • Apariencia personalizable, ya que utiliza el mecanismo de la plantilla dojo. Puede agregar su clase / Id. En las plantillas de acuerdo con su CSS

que te diviertas


Se puede hacer una barra de progreso php / ajax. (Verifique la biblioteca Html_Ajax en pera). Sin embargo, esto requiere la instalación de un módulo personalizado en php.

Otros métodos requieren el uso de un iframe, a través del cual php busca ver cuánto ha subido el archivo. Sin embargo, este iframe oculto puede ser bloqueado por algunos complementos de navegadores porque los iframes ocultos a menudo se usan para enviar datos maliciosos a la computadora de un usuario.

Su mejor opción es usar algún tipo de barra de progreso de flash si no tiene control sobre su servidor.


Si tiene instalado APC , tiene un gancho de devolución de llamada para cargar el progreso.

Rasmus Lerdorf (creador de PHP) tiene una sample de esto usando YUI (ah, y aquí está la fuente de PHP ).

Vea la documentación aquí .


Una forma PHP-ish (5.2+) y no Flash que funcionó bien para mí:

Primero, consulte this publicación que explica cómo iniciar y poner en marcha la extensión "uploadprogress".

Luego, en la página que contiene el formulario desde el que está cargando archivos, cree el siguiente iframe:

<iframe id="progress_iframe" src="" style="display:none;" scrolling="no" frameborder="0"></iframe>

A continuación, agregue este código a su botón "Enviar":

onclick="function set() { f=document.getElementById(''progress_iframe''); f.style.display=''block''; f.src=''uploadprogress.php?id=<?=$upload_id?>'';} setTimeout(set);"

Ahora tiene un iframe oculto en su formulario que será visible y mostrará los contenidos de uploadprogress.php cuando haga clic en "Enviar" para comenzar a cargar archivos. $ upload_id debe ser el mismo que está usando como valor del campo oculto "UPLOAD_IDENTIFIER" en su formulario.

El archivo uploadprogress.php en sí mismo se ve así (corrige y se ajusta a tus necesidades):

<html> <head> <META HTTP-EQUIV=''REFRESH'' CONTENT=''1;URL=?id=<?=$_GET[''id'']?>''> </head> <body> Upload progress:<br /> <?php if(!$_GET[''id'']) die; $info = uploadprogress_get_info($_GET[''id'']); $kbytes_total = round($info[''bytes_total''] / 1024); $kbytes_uploaded = round($info[''bytes_uploaded''] / 1024); echo $kbytes_uploaded.''/''.$kbytes_total.'' KB''; ?> </body> </html>

Tenga en cuenta que se actualiza automáticamente cada segundo. Seguramente puede agregar aquí una bonita barra de progreso visual (como 2 <div> s anidados con diferentes colores) si lo desea. El iframe con progreso de carga, naturalmente, solo funciona mientras la carga está en progreso, y finaliza su vida visible una vez que se envía el formulario y el navegador se recarga a la página siguiente.


la carga del flash hará el trabajo. cargará el archivo donde quieras. Pero hay más demandas que eso para mí. Necesito cambiar el nombre del archivo antes de que se complete la carga. esto también es posible con la solución flash PERO SOLO si está agregando una variable FIJA. Necesito agregar ID de usuario a un nombre de archivo y no veo forma de hacerlo.