2010-12-16 14 views
4

Ich würde gerne wissen, wie kann ich einen Vcard-Download realisieren. Das ist mein aktueller Code:So laden Sie eine .vcf-Datei korrekt herunter

$path = "../../media/resources/"; 
$file = "someName.vcf"; 

header('Content-Type: text/x-vCard'); 
header('Content-Disposition: attachment; filename= "'.$file.'"'); 
header('Content-Length: '.filesize($path.$file)); 
header('Connection: close'); 

readfile($path.$file); 

Leider hat es nur den Inhalt von der VCF-Datei geben. Wie kann ich diese vcard dem Benutzer als Download geben?

+0

Sind Sie sicher, dass die Datei durch einen Pfad '$ Pfad definiert . $ Datei' existiert? Aktivieren Sie 'error_reporting (E_ALL); ini_set ('display_errors', 'on'); 'und wiederholen ;-) – zerkms

Antwort

3

Sie haben header('Connection: close'); die ich mir vorstellen würde die Verbindung schließt, bevor der Inhalt der Datei gelesen werden. Ich habe die Zeile entfernt.

Ich bin mir nicht sicher über die Groß-/Kleinschreibung in Inhaltstyp, also habe ich es in x-vcard geändert und ich änderte die Content-Disposition in Inline (eine bekannte Lösung für Download-Probleme mit IE). Versuchen Sie folgendes:

$path = "../../media/resources/"; 
$file = "Toni_Junas.vcf"; 

header('Content-Type: text/x-vcard'); 
header('Content-Disposition: inline; filename= "'.$file.'"'); 
header('Content-Length: '.filesize($path.$file)); 

readfile($path.$file); 

Stellen Sie außerdem sicher, dass das Verzeichnis „Ressourcen“ lesbar ist (chmod 755 auf das Verzeichnis), und dass die Datei vorhanden ist ...

+0

es funktioniert :) danke – enyce12

0

setzen exit()

readfile($path.$file); 
exit(); 
+1

Wenn der oben angegebene Code die gesamte Datei ist (und es am besten anzunehmen ist), dann wäre exit nicht erforderlich –

+0

Warum ist das' exit()? 'für? Es ist für das 'flush()' Verhalten? – joksnet

Verwandte Themen