Ik heb eenvoudig een PHPscriptje om een csv bestand te maken en die te downloaden naar de cliënt.
<?
$myFile = "Testfile.csv";
$fh = fopen($myFile, 'w') or die("can't open file");
$file_txt="voorbeeldtekst";
fwrite($fh, $file_txt);
fclose($fh);
?>
<meta http-equiv="refresh" content="0;url=<?echo $myFile ?>"/>

Dit werkt prima, file wordt aangemaakt op de server en wordt gedownload naar de cliënt

Nu wil ik dit ook doen voor een xml file, dus $myFile= "Testfile.xml";
Dan wordt de file aangemaakt op de server echter wordt de file niet gedownload maar de inhoud getoond op het scherm.

Hoe kan ik dat aanpassen zodat de file wel gedownload wordt.
Met de content-disposition header kun je zorgen dat het downloaden geforceerd wordt. Daarnaast is het aan te bevelen om ook het content-type header mee te geven zodat je de browser laat weten om welk type bestand het gaat. Je krijgt dan zoiets:

<?php
header('Content-disposition: attachment; filename="newfile.xml"');
header('Content-type: "text/xml"; charset="utf8"');
readfile('newfile.xml');
?>

p.s. headers moet je als eerste versturen, daarna pas de content zelf.
Dit geeft geen oplossing, werkt ook niet als ik er een Testfile.csv van maak.
Heb je foutmeldingen aan staan? Bij enige twijfel:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
header('Content-disposition: attachment; filename="newfile.xml"');
header('Content-type: "text/xml"; charset="utf8"');
readfile('newfile.xml');
?>

Laat je code eens zien?

[size=xsmall]Toevoeging op 10/05/2018 23:00:41:[/size]

Welke browser gebruik je?

Reageren