downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Sesiones y seguridad> <Gestores de Sesión Personalizados
[edit] Last updated: Fri, 25 May 2012

view this page in

Progreso de Subida en Sesiones

Cuando la opción INI session.upload_progress.enabled está habilitada, PHP podrá rastrear el progreso de subida de ficheros individuales que están siendo subidos. Esta información no es particularmente útil para la petición de subida real en sí misma, pero durante la subida del archivo, una aplicación puede enviar una petición POST a un nodo distinto (mediante XHR por ejemplo) para comprobar el estado.

El progreso de subida estará disponible en la variable superglobal $_SESSION cuando una subida está en progreso, y al usar POST con una variable con el mismo nombre al que está establecido el ajuste INI session.upload_progress.name. Cuando PHP detecta tales peticiones POST, rellenará un array en la variable $_SESSION, donde el índice es un valor concatenado de las opciones INI session.upload_progress.prefix y session.upload_progress.name. La clave se recupera normalmente leyendo estas opciones INI, es decir

<?php
$clave 
ini_get("session.upload_progress.prefix") . ini_get("session.upload-progress.name");
var_dump($_SESSION[$clave]);
?>

También es posible cancelar la subida de ficheros que está en progreso, estableciendo la clave $_SESSION[$clave]["cancel_upload"] a TRUE. Cuando se suben múltiples ficheros en la misma petición, esto solamente cancelará la subida de ficheros que está en progreso, y las subidas de ficheros pendientes, pero no eliminará de manera satisfactoria las subidas completadas. Cuando una subida se cancela de esta manera, la clave error del array $_FILES será establecida a UPLOAD_ERR_EXTENSION.

Las opciones INI session.upload_progress.freq y session.upload_progress.min_freq controlan con qué frecuencia debería ser recalculada la información del progreso de subida. Con una cantidad razonable de estos dos ajustes, la sobrecarga de esta característica es casi inexistente

Ejemplo #1 Ejemplo de información

Ejemplo de la esctructura del array del progreso de subida.

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

La información almacenada en la sesión se parecerá a esta:

<?php
$_SESSION
["upload_progress_123"] = array(
 
"start_time" => 1234567890,   // El instante de la petición
 
"content_length" => 57343257// longitud del contenido de POST
 
"bytes_processed" => 453489,  // Cantidad de bytes recibidos y procesados
 
"done" => false,              // True cuando el gestor de POST ha finalizado, satisfactoriamente o no
 
"files" => array(
  
=> array(
   
"field_name" => "file1",       // nombre del campo <input/>
   // Los siguientes 3 elementos son iguales que aquellos de $_FILES
   
"name" => "foo.avi",
   
"tmp_name" => "/tmp/phpxxxxxx",
   
"error" => 0,
   
"done" => true,                // True cuando el gestor de POST ha terminado de manejar este fichero
   
"start_time" => 1234567890,    // Cuándo se empezo a procesar este fichero
   
"bytes_processed" => 57343250// Cantidad de bytes recibidos y procesados de este fichero
  
),
  
// Otro fichero, no terminado de subir, en la misma petición
  
=> array(
   
"field_name" => "file2",
   
"name" => "bar.avi",
   
"tmp_name" => NULL,
   
"error" => 0,
   
"done" => false,
   
"start_time" => 1234567899,
   
"bytes_processed" => 54554,
  ),
 )
);



Sesiones y seguridad> <Gestores de Sesión Personalizados
[edit] Last updated: Fri, 25 May 2012
 
add a note add a note User Contributed Notes Progreso de Subida en Sesiones
wojbach at o2 dot pl 05-Mar-2012 12:41
"session.upload-progress.name" -> whether here shouldn't be a underscore instead of a dash
powtac at gmx dot de 02-Mar-2012 08:35
takeone 02-Dec-2011 07:12
IE6 does not inherit session when you launch new browser from start menu or shortcut.It's the feature.
It is recommended that upload form and progress bar are on same window.
gerd dot randolf at web dot de 09-Nov-2011 07:29
Note that this will be available from PHP 5.4 on. It won't work in PHP 5.3 or earlier.

 
show source | credits | stats | sitemap | contact | advertising | mirror sites