Foros del Web » Programando para Internet » PHP »

Header location

Estas en el tema de Header location en el foro de PHP en Foros del Web. Hola! Tengo un script que me genera un archivo excel, el cual lo he armado usando la clase Pear::Excel_Writer. El codigo todo perfecto! Lo unico ...
  #1 (permalink)  
Antiguo 30/04/2008, 20:41
 
Fecha de Ingreso: enero-2008
Mensajes: 63
Antigüedad: 16 años, 3 meses
Puntos: 0
Header location

Hola!
Tengo un script que me genera un archivo excel, el cual lo he armado usando la clase Pear::Excel_Writer.
El codigo todo perfecto! Lo unico que me falta es poder indicar donde quiero que se guarde el archivo que se genera sin la necesidad que el usuario en el momento lo seleccione.
La idea es que sea un lugar fijo, esto se podra lograr con:
header("Location: $ruta");
Esa variable $ruta, podra ser una url del estilo: www.misitio.com/temporal ??

Desde ya muchas gracias!
Etej
  #2 (permalink)  
Antiguo 30/04/2008, 21:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Header location

Hola etej,

Vía PHP no puedes tener ese control, si quieres forzar a que el usuario no tenga que seleccionar la ruta, deberás de usar un Applet en Java o un control ActiveX.

Saludos.
  #3 (permalink)  
Antiguo 30/04/2008, 21:45
 
Fecha de Ingreso: enero-2008
Mensajes: 63
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Header location

Hola GatorV:
La verdad que estoy mareada con este tema, ayer estuve rumbeando por otra solucion que me habias propuesto en otra respuesta que me diste, pero no le encontre la vuelta... te pido si me podes dar una mano.
Me hablaste de usar ob_start y ob_get_contents. Mira lo que hice...

Tengo el siguiente codigo que genera mi planilla excel (codigo en negro), le agregue en rojo para usar los buffers de manera tal de poder evitar que pida al usuario el path donde guardarlo...

<?
require_once 'Spreadsheet/Excel/Writer.php';

// Creamos un libro de excel que sirve como nuestro espacio de trabajo.
ob_start();
$libro = new Spreadsheet_Excel_Writer();

// Estableceremos nuestro formato Negrita para usarlo en el documento
$negrita =& $libro->addFormat();
$negrita->setBold();

// Necesitamos una hoja en la cual poner nuestros datos
$hoja =& $libro->addWorksheet('Hoja1');

// Verificamos que la hoja se haya generado correctamente
if (PEAR::isError($hoja)) {
die($hoja->getMessage());
}

// Este es el titulo
$hoja->write(0, 0, "Escribir hojas en excel", $negrita);

// Generamos nuestro libro de excel
$libro->send('ejemplo.xls');
$salida = ob_get_contents();
$file = "/tmp" .'/'. $path;
@chmod($file,0755);
$fw = fopen($file, "w");
fputs($fw,$salida, strlen($salida));
fclose($fw);

$libro->close();
?>

Al ejecutarlo me da un warning en el fopen: failed to open stream: Permission denied in y la linea del codigo donde esta el fopen...
En que le estoy errando?? Please! Necesito AYUDA!

Gracias!
  #4 (permalink)  
Antiguo 30/04/2008, 21:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Header location

Si te dice permission denied, es porque no tienes permisos para abrir el archivo o el directorio. Verifica que tu usuario tenga los permisos suficientes.

Saludos.
  #5 (permalink)  
Antiguo 30/04/2008, 21:59
 
Fecha de Ingreso: enero-2008
Mensajes: 63
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Header location

OK, vos decis que el tema pase por los permisos, voy a pedir que me verifiquen porque estoy trabajando sobre un servidor sobre el cual no tengo acceso a mirar como esta.
Ahora... el codigo ves que sea el correcto? Se entiende la idea de lo que quice armar?

Mil gracias!!!
  #6 (permalink)  
Antiguo 30/04/2008, 22:05
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Header location

Si, en teoría es correcto, el ob_start lo puedes poner justo antes del send para capturar la salida del XLS.

Saludos.
  #7 (permalink)  
Antiguo 30/04/2008, 22:11
 
Fecha de Ingreso: enero-2008
Mensajes: 63
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Header location

OK!!! Mil gracias veremos una vez que me habiliten los permisos correctos como funciona.

saludos
  #8 (permalink)  
Antiguo 01/05/2008, 07:30
 
Fecha de Ingreso: enero-2008
Mensajes: 63
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Header location

Y sigo con problemas...
El tema de permisos ya fue solucionado y puedo crear correctamente el archivo, pero si dejo la sentencia send, sigue pidiendo al usuario donde grabarlo. Si la comentareo, pensando en que en el buffer debe quedar todo lo que se graba en la hoja excel, me graba el .xls pero totalmente vacio (0 KB) y ademas cuando lo intento abrir no lo reconoce con formato valido.
Te transcribo la funcion send:

function send($filename)
{
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
header("Pragma: public");
}

Por favor, te pido si me podes orientar porque realmente no se como seguir!! Gracias!
  #9 (permalink)  
Antiguo 01/05/2008, 11:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Header location

En la documentación de PEAR::Excel_Writer viene un ejemplo muy claro de como generar un archivo sin usar send:
Código PHP:

<?php
require_once 'Spreadsheet/Excel/Writer.php';

$workbook = new Spreadsheet_Excel_Writer('test.xls'); // En esta linea indicas donde guardar el archivo

$worksheet =& $workbook->addWorksheet('My first worksheet');

$worksheet->write(00'Name');
$worksheet->write(01'Age');
$worksheet->write(10'John Smith');
$worksheet->write(1130);
$worksheet->write(20'Johann Schmidt');
$worksheet->write(2131);
$worksheet->write(30'Juan Herrera');
$worksheet->write(3132);

$workbook->close();
?>
Saludos.
  #10 (permalink)  
Antiguo 01/05/2008, 18:23
 
Fecha de Ingreso: enero-2008
Mensajes: 63
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Header location

Gracias! Sabes que ya lo habia probado asi y no me habia funcionado... despues me enrede con lo de ob_start... y con eso surgio el tema de los permisos del directorio... y ahora volviendo a probar con esto que me decis funciona. O sea que la primera vez me falló por ese tema y no me di cuenta.

Muchas gracias!
Hay veces que uno se encierra y no ve lo obvio!
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 09:45.