我希望我的php脚本的用户能够从我的服务器下载某个文本文件的内容但我不希望他们直接从我的服务器下载它所以我想通过一个名为php的文件的download.php
我使用此代码来触发文件提示
header("Content-Type: text/plain");
header("Content-Disposition: attachment; filename=textfile.txt");
header("Content-Length: " . filesize('textfile.txt');
$fp = fopen('textfile.txt', "r");
fpassthru($fp);
fclose($fp);
代码有效,文件被下载但似乎代码忽略了该文本文件的新行。
假设原始文本文件的内容是
word1 word2 word3 word4 word5
下载文件的内容为
word1word2word3word4word5
如何解决下载文件实际上保留原始文本文件的新行的问题?
答案 0 :(得分:2)
这是一个将文本文件EOL从Linux,Windows和Mac转换为Windows的代码。 所以无论你的文件有什么EOL,它都会在Win上打开。
header("Content-Type: text/plain");
header("Content-Disposition: attachment; filename=textfile.txt");
header("Content-Length: " . filesize('textfile.txt'));
$f = file_get_contents('textfile.txt');
$f = str_replace("\r\n", "\n", $f); //Convert Windows to Unix
$f = str_replace("\r", "\n", $f); //Convert Mac to Unix
$f = str_replace("\n", "\r\n", $f); //Convert Unix to Windows
echo $f;
代码很短但对于大文件来说并不算太好。