Descargar directamente un archivo xml sin tenerlo en el servidor
Publicado por laura (3 intervenciones) el 30/03/2019 02:17:46
Buenas tengo este código que crea un elemento xml basándose en los registros de la base de datos esto lo crea perfecto, a la hora de descargarlo el problema que tengo es que necesito crear ese fichero en el servidor para luego descargarlo en el cliente.
Lo que quiero hacer es que se descargue en el cliente sin tener que guardarlo en el servidor
Lo he intentado con funciones y de todo y nada...
No se si me explico
Lo que quiero hacer es que se descargue en el cliente sin tener que guardarlo en el servidor
Lo he intentado con funciones y de todo y nada...
No se si me explico

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
/*
Autor: Laura Fernandez
Fecha 35/03/2019
Comentarios: conexion a la base de datos
*/
include '../config/configBD.php';
try {
// parametros de la connexion a la base de datos
$myBD = new PDO(DSN, USER, PASS);
$myBD->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//creamos un objeto del DOM
$fichero = new DOMDocument();
$fichero->formatOutput = true; // le damos formato al fichero
//CREACION DEL FICHERO
//creamos el elemento con un "hijo"
$etiquetaDepartamentos = $fichero->createElement('Departamentos');
$etiquetaDepartamentos = $fichero->appendChild($etiquetaDepartamentos);
//hacemos la consulta y la ejecutamos para sacar los campos
$consulta = $myBD->prepare('select * from Departamento');
$consulta->execute();
$fechaHoy = date('Ymd'); // creamos una variable con la fecha para introducirla en el nombre del fichero
while ($registro = $consulta->fetchObject()) { // creamos un bucle para sacar todos los elementos en la estructura xml
$etiquetaDepartamento = $fichero->createElement('Departamento');
$etiquetaDepartamento = $etiquetaDepartamentos->appendChild($etiquetaDepartamento);
$CodDepartamento = $fichero->createElement('CodDepartamento', $registro->CodDepartamento);
$CodDepartamento = $etiquetaDepartamento->appendChild($CodDepartamento);
$DescDepartamento = $fichero->createElement('DescDepartamento', $registro->DescDepartamento);
$DescDepartamento = $etiquetaDepartamento->appendChild($DescDepartamento);
}
// para guardar el fichero
$fichero->saveXML(); // crea el fichero tras la representacion del DOM
if ($fichero->save("../tmp/" . $fechaHoy . "Departamentos.xml") != 0) { //donde guardaremos en local el fichero
header('Content-Type: text/xml');
header("Content-Disposition: attachment; filename=" . $fechaHoy . "Departamentos.xml"); //descargar
readfile("../tmp/" . $fechaHoy . "Departamentos.xml"); // mostrar desde el fichero del servidor en el navegador el documento xml si este no se descarga
} else {
echo "<p>No pudo guardarse la base de datos</p>";
}
} catch (PDOException $error) {
echo "<p>Error " . $error->getMessage() . "</p>";
} finally {
unset($myBD);
}
?>
Valora esta pregunta


0