Link zu xml-Datei als Download-Link?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
angeben
array
beispiel
browser
check
code
dank
datei
dialog
disposition
entsprechende header
file
header
senden
setzen
sonderbehandlung
speichern
target
text
type
-
Hallo
ich habe ein Script das für den User eine XML Datei erstellt
diese Datei soll sich der User dann auf seinen PC downloaden
bisher mache ich einfach einen Link zur XML-Datei
mit dem Hinweis: bitte Speichern unter (nicht nur öffnen)
Wie kann ich einen Link so setzen, dass die Datei nicht im Browser geöffnet wird,
sondern gleich der Download-Dialog gestartet wird (geht das überhaupt?)
Ich will aber die Datei nicht ZIPpen, es soll beim User-Client als .xml ankommen
Wie muss ich den <a href="datei.xml" target="_download">Download mich</a> gestalten,
damit das geht? ... gibt es dafür einen target oder brauch ich JS oder was auch immer ?!?
Danke -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Geht nicht. Zumindest gibt es keine für alle Browser kompatible Lösung. Du musst die XML über PHP ausliefern und entsprechende Header senden.
<?php header('Content-type: text/xml'); header('Content-Disposition: attachment; filename="datei.xml"'); $datei = @file_get_contents('datei.xml'); die($file) ?>
Beitrag zuletzt geändert: 20.4.2011 7:07:08 von fabo -
Danke
hab nochmal gegoogelt ...
header("Pragma: public"); header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); Header('Content-Disposition: attachment; filename="datei.xml"');
... macht es nicht Sinn im header als Content-Type: download anzugeben anstatt text/xml ?
nur so aus Interesse ... es funktioniert auch so mit dem BSP von fabo
-
Moin,
den Content-Type kannst du angeben, wie du willst, das ist nur eine Hilfe für den Browser, damit dieser weiß, was für eine Datei kommt, so dass er sich dann z.B. eine Verknüpfung zu einer Anwendung "denken" kann, falls der User einfach nur die Datei außerhalb des Browser öffnen will, zum Beispiel in einem Editor.
Übrigens beim setzen der header kann man auch noch einige Sachen beachten, so verhält sich der IE zum Beispiel anders, wenn bestimmte Einträge fehlen, darum habe ich mir dazu so eine Art Standard snippet zusammengebaut, das so aussieht
P.S.: Wundere dich nicht über das array $file, das ist bei mir oft so organisiert, da es dann leichter ist Eigenschaften zu ändern, Beispiel:// IE Sonderbehandlung, damit dieser auch richtig downloaded header('Pragma: public'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); // IE Sonderbehandlung für andere Browser zurücksetzen header('Cache-Control: private', false); // Download anschubsen, dazu … // … den Dateityp senden, damit der Browser weiß, was er damit // machen kann und soll header('Content-Type: '.$file['type']); // … Einen Dateinamen angeben, den der Browser beim Speichern // dann dem User vorschlägt header('Content-Disposition: attachment; filename="'.$file['name'].'";'); // … verhindern, dass base64 Kodiert übertragen wird, // das wäre 33% größer header('Content-Transfer-Encoding: binary'); // … Dateilänge angeben, damit der Browser weiß wie groß die Datei ist // außerdem muss dieser Header bei manchen Browser gesetzt sein // damit ein Download angeboten wird header('Content-Length: '.filesize($file['location'])); // … lese die Datei direkt in die Ausgabe, das reduziert die // Arbeitsspeicherauslastung und erhöht so die Performance readfile($file['location']); // … Beende das Programm exit;
$file = array(); $file['name'] = 'Datei.txt'; $file['location'] = '../siblingFolder/subFolder/File.html'; $file['type'] = 'text/xml';
Mit freundlichen Grüßen
Beitrag zuletzt geändert: 27.4.2011 21:21:41 von nemoinho -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage