【问题标题】:PHP save file to users computerPHP将文件保存到用户计算机
【发布时间】:2012-02-06 03:51:33
【问题描述】:

我有一个脚本,可以在单击“添加联系人”按钮时为员工创建一个 vCard。我有这个 vCard 在一个变量中,但我不确定接下来要如何处理它。

我认为我的第一步应该是将此文件保存在服务器上?

我只想弹出一个框,让人们下载并保存 vCard,所以如果不需要这一步,我想跳过它。

这里的任何指针都会被应用。

谢谢。

【问题讨论】:

  • PHP 可用于向用户输出 html 以外的内容。发送正确的文件头,系统将提示用户下载文件而不是获取 HTML 页面。
  • 这个问题更通用的版本是Force File Download。它并没有解决你所有的特定问题,所以我不会给它尽可能重复,尽管这确实是边界。
  • 谢谢 Gordon,我不确定我在寻找什么,因为我以前从未这样做过。 IE。我知道我需要下载一个文件,但实际上我并不认为不先保存到服务器并下载就可以做我想做的事,所以“强制”位甚至没有进入我的想法。跨度>

标签: php save vcf-vcard


【解决方案1】:

如果您希望在有人请求导出 URL 时弹出文件保存对话框,则必须使用

header("Content-type:text/vcard; charset=utf-8");
header("Content-Disposition: attachment; filename=vcardexport.vcf");
echo $vCardData;

所以不,您不必先将其保存为服务器上的文件。您可以从变量中提供它。请注意,只要为 Content-Type 指定正确的 MIME Type,您就可以将此方法用于任何其他数据。

另见https://en.wikipedia.org/wiki/VCardhttps://www.ietf.org/rfc/rfc2183.txt

【讨论】:

  • 谢谢,这对我解决问题很有帮助,文档也很有帮助。
【解决方案2】:

如果您将 vcard 放在变量中,那么您可以使用以下代码轻松地将其强制下载到客户端:

<?php

header('Content-type: text/vcard');
header('Content-disposition: attachment;filename=vcard.vcf');
echo $vcard_variable;

?>

【讨论】:

  • 来自一些旧的 RFC。我现在将其修改为正确的内容类型。
  • 谢谢两位,我已经使用了这些标题,并结合了我的输出,现在该过程正在运行。
【解决方案3】:

尝试查看 content-disposition 标头:)

它可以在客户端强制下载文件:)

【讨论】:

    【解决方案4】:

    您可以只从 PHP 输出 vCard,使用响应标头设置正确的内容类型。这应该会强制在用户的浏览器上进行下载。我用谷歌搜索了它并找到了this example

    【讨论】:

    • 谢谢你,这个例子帮助很大,除了我网站上的固定链接有点奇怪,这似乎有效。
    【解决方案5】:

    如果您在服务器上有文件,您只需在指向该文件的按钮上添加一个链接

    <a href="location of the vcard file"><img src="button.jpg"></a>
    

    或者您正在寻找不同的交付方式?

    【讨论】:

    • 当用户单击员工个人资料中的“添加内容”链接时,会动态创建 vCard。目前没有页面重载,一切都是通过AJAX完成的。
    猜你喜欢
    • 1970-01-01
    • 2016-11-09
    • 2015-01-07
    • 2015-06-25
    • 1970-01-01
    • 2018-05-17
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多