0

我希望我的 php 脚本的用户能够从我的服务器下载某个文本文件的内容,但我不希望他们直接从我的服务器下载它,所以我想通过一个名为 download.php 的 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);

代码有效,文件被下载,但似乎代码忽略了该文本文件的新行。

假设原始文本文件的内容是

单词1
字2
词3
字4
单词5

下载文件的内容将是

word1word2word3word4word5

如何修复下载的文件实际上保留了原始文本文件的新行?

4

1 回答 1

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;

代码很短,但对于大文件来说不太好。

于 2012-05-19T14:57:02.660 回答