html写入文件内容,关于html:我尝试写入屏幕的所有内容都放置在文本文件(PHP)中...

博主遇到一个PHP代码问题,代码从SQL表中提取数据并写入TXT文件,然后下载该文件。当尝试在文件操作前后echo内容时,这些echo的文本意外地被写入了下载的文件中,而不是仅显示在屏幕上。问题在于HTTP标头的使用,导致所有输出都被包含在下载的文件内。解决方案是将屏幕输出与文件下载分开处理,确保在开始发送文件内容之前没有其他输出。
摘要由CSDN通过智能技术生成

我正在处理一小段代码,该代码从SQL表中获取特定记录,并将该记录中的某些列放在txt文件中。这很好用,但是,如果我尝试在打开文件或写入文件的位置之前或之后回显屏幕上的某些内容,那么即使在文件外部放置了文本,也将回声也放置在文件中。

这是我当前的全部代码:

Even this outside the PHP is placed in the file.

echo"Banana";

$orderNo = 3;

//DB Connect

$conn = mysql_connect('localhost', 'root', '');

mysql_select_db('amazondb', $conn);

//Open file, select Table

$file = fopen('upload/Order.txt', 'w');

$result = mysql_query("SELECT ID, PurchaseDate, BuyerName, BuyerPhoneNumber,

BuyerEmail, ShipAddress1,          ShipAddress2, ShipAddress3

FROM imported_orders");

//Loop, input to file

while ($row = mysql_fetch_array($result, MYSQL_ASSOC))

{   if($row['ID']==($orderNo-1))

{fwrite($file, $row['PurchaseDate'].PHP_EOL .$row['BuyerName']);}

}

fclose($file);

//Download File

$filename ="upload/Order.txt";

header("Content-Length:" . filesize($filename));

header('Content-Type: application/octet-stream');

header('Content-Disposition: attachment; filename=Order.txt');

readfile($filename);

?>

上面的代码将以下内容输出到文件:

Even this outside the PHP is placed in the file.

Banana2013-03-14

name

这是我第一次使用标头,并使用PHP进行任何形式的下载,因此不确定是否会引起问题。 (我将通过使用if isset的HTML表单触发下载,并且用户将输入代码中的" $ orderNo",不确定现在这样做是否可以解决此问题,尽管事实上它会写东西即使在PHP之外也让我担心)

我打开文件,写入文件,然后关闭它,但是甚至在我打开文件之前的回显都已写入到文件中,关闭文件后也有回显。

这对我来说真的很奇怪,没有任何意义,尽管可能很简单

说明。

编辑:只有下载的文件中有多余的东西,保存在服务器上的文件只是表中预期的数据。

它放在哪个文件中?服务器上的文件还是客户端上的文件?

您意识到这些标头正在以应用程序/八位字节流的形式将内容作为名为Order.txt的文件发送...如果您告诉Web浏览器您向其发送文件而不是简单地输出内容,您期望什么?您不能在一个请求中发送其他内容

它应该放在客户机上的文件中,而不应该放在服务器上的文件中。

您需要了解HTTP和文件下载的工作方式。这是不可能的。

Even this outside the PHP is placed in the file, wtf.与相同...

当他尝试设置标题时,该代码如何不抱怨已经发送的输出?

您将以文本形式输出一次,然后尝试以其他形式再次输出。您可以做一个或另一个。

嗨,很抱歉,如果标头中的内容非常错误,仅在大约一个小时前进行了查找,但起初却如此,因此一无所获关于它放置在哪个文件中,不确定为什么我没有更早检查但文件保存在服务器正确,只有下载到客户端的文件不正确。再次对不起,如果我对标题的使用很糟糕,并且使您难过。

@xbonez必须在ini文件中配置输出缓冲。

@Vereonix什么是文件下载?客户端(您的浏览器)将请求发送到您的服务器(您访问PHP脚本)。服务器首先发送特定的HTTP标头,然后发送文件内容。而已。您无法在网站上显示文字,因为在文件下载的上下文中没有网站之类的东西。网站只不过是同一请求响应方案所期望的一件事:标题。您永远都不会下载和访问网站(暂时忽略JavaScript)。

现在使用标题的方式,所有输出都将放在下载中。 如果您想要一个带有下载链接的网页,请使用该链接创建另一个页面,链接到该页面。 然后在此页面上,仅回显文件中所需的数据。

基本上,您说的是标头,发送给浏览器的所有请求都将是您要下载的文件。

谢谢,直到现在,我的钱一分钱都掉了,我将2和2放在一起,实现了我点击过的每个下载链接,因为实际上这只是另一个链接,wjych只是下载文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值