PHP fileread纯文本文件

时间:2010-09-10 13:22:16

标签: php text file-io

我想'强制'在PHP中下载纯文本文件。

我有以下代码,我在网上找到了这个代码:

if (isset($_REQUEST["file"])) {
  $file=$_REQUEST["file"];
  header("Content-type: application/force-download");
  header("Content-Transfer-Encoding: ansi");
  header("Content-length: ".filesize($file));
  header("Content-disposition: attachment; filename=".basename($file));
  echo @fileread("$file");
}
else
{
  echo "No file selected";
}

这似乎工作正常,但是当在带有记事本的Windows中打开文件时,不会保留行结尾。任何人都可以提供解决方案(文本文件必须用记事本创建)?

谢谢,Rich

3 个答案:

答案 0 :(得分:0)

据我所知,记事本在这种情况下删除了这些行结尾。

答案 1 :(得分:0)

readfile(),不是fileread。是的'它不是readfile,PHP甚至Web服务器问题。它只是unix和windows纯文本格式的区别。

在unix中它是\n而在Windows中它是\r\n
你必须使用Windows格式

创建这些文件

另请注意,您的代码非常不安全。并让攻击者读取您拥有的任何文件,包括密码等。 至少做到了

$file=basename($_REQUEST["file"]);

答案 2 :(得分:0)

据我所知,ansi不是有效的内容传输编码。由于您希望按原样保留文件的内容(并且这些内容可能包含长行和CRLF行结尾),您可能希望使用binary