我希望我的php脚本的用户能够从我的服务器下载某个文本文件的内容,但我不希望他们直接从我的服务器下载它,所以我想通过一个名为下载的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
下载文件的内容将是
单词1单词2单词3单词4单词5
如何解决下载的文件实际上保留原始文本文件的新行的问题?
这是一个将文本文件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;
代码很短,但对于大文件来说不太好。