2010-12-16 2 views
4

Я хотел бы знать, как я могу реализовать загрузку Vcard. Это мой текущий код:Как правильно загрузить файл .vcf

$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); 

К сожалению, это не только выдавать содержимое из файла .vcf. Как я могу дать этому vcard пользователю в качестве загрузки?

+0

Вы уверены, что файл определяется путь `$ путь . $ file` существует? Включите `error_reporting (E_ALL); ini_set ('display_errors', 'on'); `и repeat ;-) – zerkms 2010-12-16 14:50:29

ответ

3

Вы header('Connection: close');, которые я бы себе не закроет соединение до того, как содержимое файла считываются. Я удалил строку.

Я не уверен в чувствительности к регистру в контенте, поэтому я изменил его на x-vcard, и я изменил его размещение на inline (известное исправление проблем с загрузкой IE). Попробуйте это:

$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); 

Кроме того, убедитесь, что директория «ресурсы» для чтения (CHMOD 755 в каталоге) и что файл существует ...

0

поставил exit()

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

Если указанный выше код - это весь файл (и лучше всего предположить, что он есть), то exit не потребуется. – 2010-12-16 14:58:23

+0

Почему этот` exit() для? Это для поведения `flush()`? – joksnet 2010-12-16 15:08:57