uploadprogress subir progreso precarga multiples mostrar con barra archivos archivo php ajax file-upload progress-bar

subir - Creando una barra de progreso de archivo en PHP



subir archivos jquery (9)

¿Alguien sabe de algún método para crear una barra de progreso de carga de archivos en PHP? A menudo he escuchado que es imposible.

Tengo una idea, pero no estoy seguro de si funcionaría: tener una carga de archivo normal, pero en su lugar enviarla a un iframe. Cuando esto se envía, almacene la información del archivo (tamaño y ubicación temporal) en la sesión. Al mismo tiempo, inicie una llamada AJAX a cada digamos 10 segundos para verificar el tamaño del archivo en comparación con el tamaño almacenado en la sesión. Esto devolvería el tamaño al AJAX y luego se dimensionaría una barra de progreso y tal vez se mostraría el tamaño subido al usuario.

¿Pensamientos?



Definitivamente querrás ir con FancyUpload de digitgerald . Está basado en Mootools y swfuplaod, y tiene una buena cola con statusses, progress, eta, etc. Es realmente el método más hábil que he visto para subir archivos. Para mi caso de uso personal ivé lo usé para permitir que el cliente seleccionara 1.2 gb de archivos PDF y los subiera. Los más nuevos se renombran y versionan automáticamente, se omiten los mismos, etc.



En PHP puro, tienes razón: no es posible.

Si AJAX-ify esto, entonces podrías hacer lo que estás describiendo. Los únicos medidores de progreso que he visto están en Javascript o Flash, aunque imagino que Silverlight también podría hacerlo.


En mi opinión, la mejor y más fácil solución es construir un pequeño widget flash, que consiste en un botón ''Subir'' y una barra de progreso. Flash le brinda comentarios muy detallados sobre la cantidad de datos que se han cargado hasta el momento, y puede crear una barra de progreso agradable en función de eso. No requiere un sondeo ineficiente del servidor, y de hecho no requiere ningún cambio en el código del servidor. Google para ''flash uploader'' y usted encontrará que muchas personas ya han escrito estos widgets y están felices de venderlos por un dólar.


Hasta ahora, la forma más común de hacerlo es SWFUpload: http://www.swfupload.org/

Sin embargo, es posible con PHP puro, solo muy difícil y muy experimental. Veré si puedo encontrar el enlace.

Editar: De acuerdo con los comentarios en php.net, a partir de 5.2 hay un gancho para manejar el progreso de carga. http://us.php.net/features.file-upload#71564

Más explicación:

Ejemplo de Rasmus:



Recomiendo mirar SWFUpload para lograr lo que quieres. Es bastante flexible y admite cola de archivos, por lo que incluso podría manejar cargas de múltiples archivos.


Ya sabes cómo hacerlo. El problema principal es que, por lo general, no tiene acceso al tamaño del archivo cargado hasta que haya terminado de cargarlo.

Hay soluciones para esto: habilitando APC, puede acceder a esta información si incluye un campo llamado "APC_UPLOAD_PROGRESS" y utiliza apc_fetch () para recuperar una entrada de caché con el estado.

También hay un complemento llamado uploadprogress pero no está muy bien documentado y no funciona en Windows (la última vez que lo compré).

Una alternativa es usar Flash para hacerlo. Ver scripts como FancyUpload .

Antes de que llegara APC, tuve que escribir un script CGI en C que escribía información en un archivo de texto. Sin embargo, APC parece una forma mucho mejor de hacerlo ahora.

Espero que esto ayude.