You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP生成vCard文件后缀为.php.vcf而非.vcf的问题如何解决

解决方案

当前出现.php.vcf后缀是因为你没有显式指定下载文件名,浏览器会默认使用当前执行的PHP脚本文件名作为基础拼接后缀,导致异常。只需在原有Content-Type头下新增Content-Disposition头,指定下载文件名即可解决问题,修改后完整代码如下:

function generate_vcard($fn,$ln){
    $text = 'BEGIN:VCARD' . "\r\n";
    $text .= 'VERSION:3' . "\r\n";
    $text .= 'Firstname:'.$fn . "\r\n";
    // 原代码重复的Firstname改为Lastname,可按需调整字段
    $text .= 'Lastname:'.$ln . "\r\n";
    $text .= "END:VCARD"."\r\n";
    return $text;
}

$generated_text = generate_vcard('John', 'Smith');
header('Content-Type: text/vcard');
// 新增下行指定下载文件名,可按需自定义名称,支持动态拼接变量
header('Content-Disposition: attachment; filename="John_Smith.vcf"');
echo $generated_text;
  • 如果需要动态生成文件名,比如用员工姓名作为文件名,可将文件名部分改为变量拼接:header('Content-Disposition: attachment; filename="'.$fn.'_'.$ln.'.vcf"');
  • 若需要兼容低版本浏览器,可额外添加header('Content-Length: ' . strlen($generated_text)); 确保下载流程正常,无特殊兼容需求可省略。

内容的提问来源于stack exchange,提问作者Vatsal245

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 11:36:03