我编写了以下脚本,以便最终用户可以从文本区域中输入的文本创建word文档:
$fp = fopen("yourDoc.doc", 'w+');
fwrite($fp, $wordDoc);
fclose($fp);基本上,创建的文件是"yourDoc.doc",写入文件的文本位于$wordDoc变量中。
目前,此脚本创建文档并自动将其保存到我的服务器页面所在的相同路径。我想要做的是使用上面的脚本,但提示“另存为”对话框,以便最终用户可以将文档保存到本地计算机。
经过几个小时的研究,我发现我可以使用头文件,但是我不能让它们工作。我似乎找不到一个同时包含headers、fopen和fwrite的示例。例如,我尝试了以下脚本的许多变体,但都没有成功:
$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页面):
<?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);
?>有没有人觉得这有什么问题?文件最终保存在我的服务器上,我没有看到“另存为”对话框。
我真的需要这方面的帮助。
谢谢,
发布于 2011-08-28 12:21:09
不需要先将单词data写到文件中:
header('Content-type: application/ms-word');
header('Content-disposition: attachment; filename="yourDoc.doc"');
echo $wordDoc;但是,您必须确保在调用header()之前没有发生任何输出。如果出现了一个字符"output“,PHP就不会发送报头,这将失败。
https://stackoverflow.com/questions/7219019
复制相似问题