首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PHP中用Fopen和Fwirte创建Word文档后提示另存为对话框

问如何在PHP中用Fopen和Fwirte创建Word文档后提示另存为对话框
EN

Stack Overflow用户
提问于 2011-08-28 12:18:23
回答 1查看 1.3K关注 0票数 2

我编写了以下脚本,以便最终用户可以从文本区域中输入的文本创建word文档:

代码语言:javascript
复制
$fp = fopen("yourDoc.doc", 'w+');
fwrite($fp, $wordDoc);
fclose($fp);

基本上,创建的文件是"yourDoc.doc",写入文件的文本位于$wordDoc变量中。

目前,此脚本创建文档并自动将其保存到我的服务器页面所在的相同路径。我想要做的是使用上面的脚本,但提示“另存为”对话框,以便最终用户可以将文档保存到本地计算机。

经过几个小时的研究,我发现我可以使用头文件,但是我不能让它们工作。我似乎找不到一个同时包含headers、fopen和fwrite的示例。例如,我尝试了以下脚本的许多变体,但都没有成功:

代码语言:javascript
复制
$fp = fopen("yourDoc.doc", 'w+');
fwrite($fp, $wordDoc);
fclose($fp);
header('Content-type: application/ms-word');
header('Content-disposition: attachment; filename="yourDoc.doc"');
readfile("yourDoc.doc");

我还尝试了以下内容(这是我的整个php页面):

代码语言:javascript
复制
<?php
//Connect to Db//
$con = mysql_connect("localhost", "root", "admin");
//Verify connection//
if (!$con)
{
  die('Could not connect: ' . mysql_error());
}
//Select Db//
mysql_select_db("schooldb", $con);
$wordDoc = $_GET['word'];//text for word doc//
header('Content-type: application/ms-word');
header('Content-disposition: attachement; filename="yourDoc.doc"');
$fp = fopen("yourDocument.doc", 'w+');//word doc created//
fwrite($fp, $wordDoc);//text written to word doc//
fpassthru($fp);
fclose($fp);
mysql_close($con);  
?>

有没有人觉得这有什么问题?文件最终保存在我的服务器上,我没有看到“另存为”对话框。

我真的需要这方面的帮助。

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-28 12:21:09

不需要先将单词data写到文件中:

代码语言:javascript
复制
header('Content-type: application/ms-word');
header('Content-disposition: attachment; filename="yourDoc.doc"');
echo $wordDoc;

但是,您必须确保在调用header()之前没有发生任何输出。如果出现了一个字符"output“,PHP就不会发送报头,这将失败。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7219019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档