【问题标题】:PHP VCard Not importing/GeneratingPHP VCard 不导入/生成
【发布时间】:2014-01-29 17:21:07
【问题描述】:

我正在一个网站上开发一个 php Vcard 工具,该工具在本地可以正常工作,但不能在实时服务器上工作。 在本地,我基本上是在获取联系方式并将它们写入服务器上的 .vcf 文件,即 lewis_cains.vcf,它可能如下所示:

BEGIN:VCARD
VERSION:2.1
N:name;Full
FN:Full name
ORG:Company name
TITLE:Job title
END:VCARD 

等等。

然后在该站点上,我有一个指向 .vcf 文件的直接链接,并且在本地工作时该链接/下载到我的地址簿中。

但是,我已将其推送到实时服务器上,并且它一直在输出具有上述内容的纯文本文件。 在进行了更多研究后,我稍微修改了一下,并使用 php 标头制作了这种方法来处理它:

public static function load_vcard($team_slug){
    $vcard_file = BASE_URL.'vcards/'.$team_slug.'.vcf';
    header('Content-Type: text/vcard');
    header("Content-Disposition: attachment; filename=\"".$team_slug.".vcf\";");
    readfile($vcard_file);
}

现在我处于尝试下载文件的位置,但是当我单击链接时,我收到“找不到可导入的卡片”消息。

有没有人知道为什么这会在本地而不是生活,然后为什么它似乎没有正确读取文件?

非常感谢您的帮助, 刘易斯。

【问题讨论】:

  • 你试过检查文件路径是否正确吗?类似于: if(readfile($vcard_file)){ echo 'exists'; }

标签: php oop vcf-vcard


【解决方案1】:

您加载 vCard 文件的方式可能是问题的原因。 vCard 文件存在于服务器上,对吧?然而,您似乎使用 URL 来加载文件,而不是文件系统路径。使用文件系统路径可能会解决问题:

public static function load_vcard($team_slug){
    $vcard_file = __DIR__.'/vcards/'.$team_slug.'.vcf';
    header('Content-Type: text/vcard');
    header("Content-Disposition: attachment; filename=\"".$team_slug.".vcf\";");
    readfile($vcard_file);
}

【讨论】:

  • 嗨迈克尔,非常感谢你的帮助,我刚刚试过这个。由于某种疯狂的原因,这仍然无法正常工作。它可以很好地找到文件,如果我使用 file_get_contents() 对其进行测试,它会准确显示文件中的内容,但是当我尝试下载 vcard 时它失败了!非常令人沮丧,真的不知道下一步该去哪里。无论如何再次感谢,如果您有任何其他想法,请告诉我。
  • 没问题。 :D 再想一想:生产服务器上的文件可能与您的本地安装不同步,这间接导致了这个问题。也许如果你对实时服务器进行干净的部署,这个问题就会消失。此外,在调用此方法之前是否有任何数据写入响应?也许与调试相关的“回声”蠕虫进入了实时服务器。必须在将任何内容写入响应之前设置标头。
猜你喜欢
  • 1970-01-01
  • 2011-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多