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、Ajax、jQuery 将当前 DOM 保存到服务器上的文件?