PHP将文件保存到用户计算机

Posted

技术标签:

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

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

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

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

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

谢谢。

【问题讨论】:

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

以上是关于PHP将文件保存到用户计算机的主要内容,如果未能解决你的问题,请参考以下文章

PHP写文件——将用户提交的数据保存到服务器的文件中

将文件保存到应用程序目录中[重复]

PHP 将 zip 保存到磁盘

使用 PHP、Ajax、jQuery 将当前 DOM 保存到服务器上的文件?

PHP:使用 DOMPDF 自动将动态 PDF 保存到远程服务器

如何将 PHP 会话数据保存到数据库而不是文件系统中?