Foros del Web » Programando para Internet » PHP »

Generar varios archivos descargables al mismo tiempo

Estas en el tema de Generar varios archivos descargables al mismo tiempo en el foro de PHP en Foros del Web. Buenas tardes, les comento, actualmente tengo un sistema que recoge valores de un formulario los procesa llama a algún procedimiento Oracle y me genera un ...
  #1 (permalink)  
Antiguo 14/10/2011, 08:40
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Generar varios archivos descargables al mismo tiempo

Buenas tardes, les comento, actualmente tengo un sistema que recoge valores de un formulario los procesa llama a algún procedimiento Oracle y me genera un excel.

Me están solicitando que a partir de un formulario se creen varios archivos al mismo tiempo, y realmente no se si es posible.

Se les ocurre alguna manera?

Este es el metodo que genera el excel.

Código PHP:
Ver original
  1. /**
  2. * Este método se encarga de generar los archivos excel para los demás métodos de la clase.
  3. *
  4. * @static
  5. * @param statement $stid Es la salida que devuelve la consulta a oracle.
  6. * @param boolean $debug Por defecto es false. True para correr test de unidad
  7. * @return integer Son la cantidad de registros que devolvió la consulta (solo en modo debug).
  8. *
  9. */
  10. static private function generar($stid, $id_log, $debug) {
  11.  
  12.     $row = oci_fetch_array($stid, OCI_ASSOC + OCI_RETURN_NULLS);
  13.  
  14.     if ($row > 0 && !$debug) {
  15.  
  16.         $objPHPExcel = new PHPExcel();
  17.  
  18.         $objPHPExcel->getProperties()->setCreator("Lucas Swider")
  19.                 ->setLastModifiedBy("Lucas Swider")
  20.                 ->setTitle("Office 2007 XLSX Test Document")
  21.                 ->setSubject("Office 2007 XLSX Test Document")
  22.                 ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
  23.                 ->setKeywords("office 2007 openxml php")
  24.                 ->setCategory("Test result file");
  25.  
  26.  
  27.         $columna = 0;
  28.         foreach ($row as $key => $valor) {
  29.             $objPHPExcel->setActiveSheetIndex(0)->setCellValueExplicitByColumnAndRow($columna, 1, $key);
  30.             $columna++;
  31.         }
  32.  
  33.         $columna = 0;
  34.         foreach ($row as $key => $valor) {
  35.             $objPHPExcel->setActiveSheetIndex(0)->setCellValueExplicitByColumnAndRow($columna, 2, $valor);
  36.             $columna++;
  37.         }
  38.  
  39.         $j = 3;
  40.         while ($row = oci_fetch_array($stid, OCI_ASSOC + OCI_RETURN_NULLS)) {
  41.            
  42.              $columna = 0;
  43.             foreach ($row as $key => $valor) {
  44.                 $objPHPExcel->setActiveSheetIndex(0)->setCellValueExplicitByColumnAndRow($columna, $j, $valor);
  45.                 $columna++;
  46.             }
  47.             $j++;
  48.         }
  49.         self::updatearLog($id_log, 1);
  50.  
  51.         // Redirect output to a client?s web browser (Excel2007)
  52.         header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  53.         $filename = 'Content-Disposition: attachment;filename="' . self::$_nombre . '.xlsx"';
  54.         header($filename);
  55.         header('Cache-Control: max-age=0');
  56.  
  57.         $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
  58.         $objWriter->save('php://output');
  59.        
  60.         exit;
  61.    }
  62.    self::updatearLog($id_log, $debug);
  63.    return $row;
  64. }
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #2 (permalink)  
Antiguo 14/10/2011, 10:02
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Generar varios archivos descargables al mismo tiempo

hasta donde sé no es posible volcar a la salida de una petición HTTP más de un archivo (si te fijas en el protocolo, para cada imagen por ejemplo se hace una petición y se devuelve la imagen como tal, no todas de una sola vez).

la solución más factible a mi parecer es comprimir todos los archivos en un zip y forzar la descarga de dicho comprimido.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 14/10/2011, 10:10
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: Generar varios archivos descargables al mismo tiempo

Si yo estaba pensando lo mismo. Creo que optare por crear un excel con varias pestañas.

Muchas gracias!
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #4 (permalink)  
Antiguo 14/10/2011, 13:21
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Generar varios archivos descargables al mismo tiempo

Cita:
Iniciado por h2swider Ver Mensaje
Si yo estaba pensando lo mismo. Creo que optare por crear un excel con varias pestañas.

Muchas gracias!
genial, así es hasta más practico +karma
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Etiquetas: descargables, registro
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:43.