Foros del Web » Programando para Internet » PHP »

Guardar fichero CSV en ruta determinada en PHP

Estas en el tema de Guardar fichero CSV en ruta determinada en PHP en el foro de PHP en Foros del Web. Me gustaría saber que sentencias debo poner para poder guardar en una ruta que elija el usuario el fichero. Se trata de unn fichero con ...
  #1 (permalink)  
Antiguo 27/05/2009, 09:10
 
Fecha de Ingreso: agosto-2007
Mensajes: 248
Antigüedad: 16 años, 8 meses
Puntos: 1
De acuerdo Guardar fichero CSV en ruta determinada en PHP

Me gustaría saber que sentencias debo poner para poder guardar en una ruta que elija el usuario el fichero. Se trata de unn fichero con extension CSV.

Estas sentencias no me funcionan, se me descarga un fichero llamado id_resource
sin extension:

header("Content-type: application application/csv");
header("Content-Disposition: attachment; filename=".$fichero."");

Un saludo ¡¡¡
  #2 (permalink)  
Antiguo 27/05/2009, 09:30
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
Respuesta: Guardar fichero CSV en ruta determinada en PHP

las cabeceras correctas para forzar la descarga de un archivo son

header("Pragma: public");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-type: application/force-download");
header("Content-Length: ".filesize($carpeta.$archivo));
header("Content-Disposition: attachment; filename=".$archivo);
header("Content-Transfer-Encoding: binary");

donde $carpeta es la carpeta donde esa guardada el archivo
y $archivo es el nombre del archivo

__________________
Degiovanni Emilio
developtus.com
  #3 (permalink)  
Antiguo 28/05/2009, 01:12
 
Fecha de Ingreso: agosto-2007
Mensajes: 248
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Guardar fichero CSV en ruta determinada en PHP

No me funciona, me guarda el fichero donde tengo guardado el proyecto con los script PHP pero al salir el mensaje donde pone Abrir o Guardar fichero, al intentar abrir el fichero no se muestra ningun contenido en el fichero, aparece vaío, pero en la ruta donde tengo el proyecto si aparece con contenido.

¿Por qué puede pasar esto?

Muchas Gracias¡¡
  #4 (permalink)  
Antiguo 28/05/2009, 01:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Guardar fichero CSV en ruta determinada en PHP

no no, algo les sigue faltando...

Código PHP:
<?php
$data 
file_get_contents('el/archivo.original'); // o los datos, pues...
$name 'el-nombre.extension';
$mime 'el/tipo-MIME';

// NOTEN las comillas dobles alrededor de filename="..."
header(sprintf('Content-Disposition: attachment; filename="%s"'$name));
header(sprintf('Content-Length: %d'strlen($data)));
header(sprintf('Content-Type: %s'$mime));
header('Content-Transfer-Encoding: binary');
header('Pragma: no-cache');
header('Expires: 0');
exit;
$data debe ser el contenido del archivo a descargar, si dicho contenido es creado dinámicamente hay que hacerlo algo así...

Código PHP:
// por ejemplo, usando MySQL
$data '';
while (
/* ... */)
{
  
$data .= "columna,{$row->valor}\n";
  
// ...

NOTA que no debe existir nada antes del <?php

espero quede claro, suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 29/05/2009, 05:41
 
Fecha de Ingreso: agosto-2007
Mensajes: 248
Antigüedad: 16 años, 8 meses
Puntos: 1
De acuerdo Respuesta: Guardar fichero CSV en ruta determinada en PHP

Con el siguiente código me sale bien pero por alguna extraña razón me empieza a salir la información en la tercera línea, es como si en las dos primeras líneas hubiera dos retornos de carro.

Código:
header("Pragma: public");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=".$nombrefichero);
header("Content-Transfer-Encoding: binary");

$f=fopen($nombrefichero,"rb");
//Imprime todos los datos restantes en un apuntador de archivo
fpassthru ($f);
//Elimina un archivo
unlink ($nombrefichero);
fclose($f);
¿Alguna idea?. Muchas Gracias ¡¡¡
  #6 (permalink)  
Antiguo 29/05/2009, 09:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Guardar fichero CSV en ruta determinada en PHP

usa readfile()
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 30/05/2009, 09:30
 
Fecha de Ingreso: agosto-2007
Mensajes: 248
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Guardar fichero CSV en ruta determinada en PHP

Muy bien "pateketrueke" pero aplicado al código que puse anteriormente como debería usar readfile()...no entiendo nada..debe ser una cosa muy sencilla pero no se como implementarla....gracias ¡¡¡

No sabeis de algun ejemplo que os funcione y podais ponerlo aqui..nos sería de mucha utilidad a los que usamos frecuentemente el foro.

Gracias de nuevo ¡¡¡
  #8 (permalink)  
Antiguo 30/05/2009, 09:38
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Guardar fichero CSV en ruta determinada en PHP

Código PHP:
<?php
echo readfile("test.txt");
?>
  #9 (permalink)  
Antiguo 30/05/2009, 09:42
 
Fecha de Ingreso: agosto-2007
Mensajes: 248
Antigüedad: 16 años, 8 meses
Puntos: 1
De acuerdo Respuesta: Guardar fichero CSV en ruta determinada en PHP

Por fin ya encontré una solución....gracias "pateketrueke" me diste una buena idea y he tirado por ahi y al final supe como hacerlo.

La solución es la siguiente:

Código:
if(file_exists($nombrefichero)) 
  {
   header('Content-Description: File Transfer');
   header('Content-Type: application/octet-stream');
   header('Content-Disposition: attachment; filename='.basename($nombrefichero));
   header('Content-Transfer-Encoding: binary');
   header('Expires: 0');
   header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
   header('Pragma: public');
   header('Content-Length: ' . filesize($nombrefichero));
   ob_clean();
   flush();
   readfile($nombrefichero);
   exit;
  }
Gracias a tod@s por vuestra colaboración ¡¡¡
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 13:22.