PHP - Descargar directamente un archivo xml sin tenerlo en el servidor

 
Vista:
Imágen de perfil de laura
Val: 5
Ha aumentado su posición en 24 puestos en PHP (en relación al último mes)
Gráfica de PHP

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


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
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 joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Descargar directamente un archivo xml sin tenerlo en el servidor

Publicado por joel (1269 intervenciones) el 30/03/2019 09:54:23
Hola Laura, de la manera que lo tienes, parece que es correcto... el archivo le aparecerá al usuario para descargarlo, no?
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
Imágen de perfil de Laura
Val: 5
Ha aumentado su posición en 24 puestos en PHP (en relación al último mes)
Gráfica de PHP

Descargar directamente un archivo xml sin tenerlo en el servidor

Publicado por Laura (3 intervenciones) el 30/03/2019 10:15:02
Gracias por contestar, si ,el código ese es correcto y funciona perfectamente.
El archivo se descarga en el usuario perfectamente pero lo que quiero hacer esque se descargue en el usuario solamente.
Ese código crea el XML en la carpeta tmp del servidor yo no quiero que lo cree en el servidor si no que se descargue en el usuario y no haga nada mas.
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
Imágen de perfil de Alejandro
Val: 1.634
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Descargar directamente un archivo xml sin tenerlo en el servidor

Publicado por Alejandro (839 intervenciones) el 30/03/2019 15:43:40
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
¿Has intentado esto?
1
2
header('Content-Type: text/xml');
print $xml->saveXML();
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
Imágen de perfil de laura
Val: 5
Ha aumentado su posición en 24 puestos en PHP (en relación al último mes)
Gráfica de PHP

Descargar directamente un archivo xml sin tenerlo en el servidor

Publicado por laura (3 intervenciones) el 10/04/2019 18:22:42
asi me lo muestra en el navegador, pero no me lo descarga como un fichero xml
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