php生成文件,并下载的问题。

revolkiss 2006-12-06 09:07:48
从数据库读取数据,制作成xml文件,之后将这个文件下载,确认这个文件制作成功,但是下载后的xml没有内容。用同样的代码,下载同样这个生成的文件,就完全正确。这是为什么?
代码:
<?php
$glink;
$gresult;

function connDB(&$link)
{
$link = mysql_connect('localhost', 'ken', 'ken');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
else
{
echo $link ;
}
mysql_select_db("scp",$link);
$glink=$link;
}

function getData(&$result,&$link)
{
$result = mysql_query("select * from users ",$link);
$gresult= $result;
}

function initXML($filexmlPath,&$result)
{
$doc = domxml_new_doc("1.0");
$doc->formatOutput = true;
$users=$doc->create_element( "users" );
$doc->append_child( $users );
while($row=mysql_fetch_array($result))
{
$user = $doc->create_element( "user" );
$userID=$doc->create_element( "userID" );
$userID->append_child($doc->create_text_node( $row['uid'] ));
$user->append_child($userID);

$userName=$doc->create_element( "userName" );
$userName->append_child($doc->create_text_node( $row['name'] ));
$user->append_child($userName);

$users->append_child( $user );
}
$xml_data = $doc->dump_mem(true);
$filename = $filexmlPath;
if (is_writable($filename)) {
if (!$handle = fopen($filename, 'wb')) {
//echo "Cannot open file ($filename)";
exit;
}
// Write $xml_data to our opened file.
if (fwrite($handle, $xml_data) === FALSE) {
//echo "Cannot write to file ($filename)";
exit;
}
//echo "Success, wrote ($somecontent) to file ($filename)";
fclose($handle);

}
else {
//echo "The file $filename is not writable";
}
}

function downLoadFile($filexmlPath,$filename)
{
ob_start();
$file_path=$filexmlPath;//$file_name;
$file_size = filesize($file_path);
header("Content-type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Accept-Length: $file_size");
header("Content-Disposition: attachment; filename=".$filename);
$fp = fopen($file_path,"r");
$buffer_size = 1024;
$cur_pos = 0;
while(!feof($fp)&&$file_size-$cur_pos>$buffer_size)
{
$buffer = fread($fp,$buffer_size);
echo $buffer;
$cur_pos += $buffer_size;
}
$buffer = fread($fp,$file_size-$cur_pos);
echo $buffer;
ob_end_flush();
fclose($fp);
return true;
}

function excute()
{
//$WebRoot = $_SERVER['DOCUMENT_ROOT'];
//fopen($WebRoot."/forum/list/7/6.shtml","w");

$filexmlPath="D:/temp/user.xml";
$filexmlName="user.xml" ;
$lk;
$lr;

connDB($lk);
getData($lr,$lk);
initXML($filexmlPath,$lr);
downLoadFile($filexmlPath,$filexmlName);
}
excute();

?>

注释就不加了,就3个函数的功能,为什么呢?是设置问题?
...全文
739 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zairwolf 2006-12-06
  • 打赏
  • 举报
回复
mark
revolkiss 2006-12-06
  • 打赏
  • 举报
回复
up
li1229363 2006-12-06
  • 打赏
  • 举报
回复
我一般把下载的数据放到javascript里面提供下载。ASP总是自己寻找那些打开方式。JSP有专门的函数可以实现强行下载。我上面的那种方法也是一种强行下载的手段。
hzg7361 2006-12-06
  • 打赏
  • 举报
回复
跟着学习,期待高手解答

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧