PHP - Envio de ficheros

   
Vista:

Envio de ficheros

Publicado por Javier (46 intervenciones) el 07/02/2013 12:20:48
Hola.
Estoy intentando que desde un procedimiento php me envie un fichero csv al pc desde el servidor.
Cuando pulso un boton en el html llamo a una funcion javscript que hace una llamada ajax a php.

El proceso es este:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//Descarga del fichero
 
$root = "../temp/";
$file = basename($ficherocsv);
$path = $root.$file;
$type = '';
echo ("El path del dichero es:".$path);
if (is_file($path)) {
 $size = filesize($path);
 if (function_exists('mime_content_type')) {
 $type = mime_content_type($path);
 } else if (function_exists('finfo_file')) {
 $info = finfo_open(FILEINFO_MIME);
 $type = finfo_file($info, $path);
 finfo_close($info);
 }
 if ($type == '') {
 $type = "application/force-download";
 //echo ("PASO por aqui");
 }
 // Definir headers
 header("Content-Type: $type");
 header("Content-Disposition: attachment; filename=\"$path\"");
 header("Content-Transfer-Encoding: binary");
 header("Content-Length: " . $size);
 // Descargar archivo
 readfile($path);
} else {
 die("El archivo no existe.");
}


Decir que el fichero existe o se ha creado en el codigo anterior a este.
No da error o no lo veo, aparenteme procesa todo pero no me sale ninguna ventana en la que me pida donde guardarlo o un aviso de que hay un fichero por descargar.
¿Que me falta?.


Un saludo,
Javier.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Envio de ficheros

Publicado por xve (5518 intervenciones) el 07/02/2013 20:38:07
Hola Javier, si ejecutas este código php directamente, sin pasar por javascript, y le quitas el echo(...), no te funciona?
Yo lo he probado y a mi me ha funcionado perfectamente sin llamarlo desde jquery, por lo que creo que el problema puede estar en el javascript... nos lo puedes mostrar?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Envio de ficheros

Publicado por Javier (46 intervenciones) el 09/02/2013 19:32:19
Buenas tardes.
Disculpad la tardanza en la respuesta.
La llamda AJAX es la siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function cargarsid(){
	    var json;
	    // var data =" ";
	    var strUrl = "cargasi.php";
		// 
	    $.ajax({
	  	url:strUrl,
       		success:function (data){
		alert ("Fichero generado");
		},
		error: function (data){
		alert ("Algo ha fallado:");
		},
	       dataType: "json"
	    });
 
};


Este proceso de lo que se encarga es de la llamada.
El proceso llamado como ya he comentado antes de la generacion del fichero y devolucion de este.
Creo que algo hago mal, me explico, en el php genero el fichero (eso si funciona) y acto seguido hago el proceso de envio de fichero que es lo que falla.

Si este proceso lo divido en dos rutinas php, funciona pero para ello tengo que generar una segunda llamada (divido en dos php) para el retorno del fichero con:

<a href="descargacsv.php">Descargar CSV</a>


¿Por que asi funciona y todo seguido en un php no funciona?.


Muchas gracias y un saludo,
Javier.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar