PHP fileread простые текстовые файлы - PullRequest
2 голосов
/ 10 сентября 2010

Я хочу «принудительно» загрузить простой текстовый файл в 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 с помощью блокнота, окончания строк не сохраняются.Может кто-нибудь предложить решение этой проблемы (текстовые файлы должны быть созданы с помощью блокнота)?

Спасибо, Рич

Ответы [ 3 ]

0 голосов
/ 10 сентября 2010

readfile(), не в файле. и да, это не проблема чтения файлов, PHP или даже веб-сервера. это просто разница между форматами Unix и Windows.

в Unix это \n в то время как в Windows это \r\n
Вы должны создать эти файлы, используя формат Windows

также обратите внимание, что ваш код крайне небезопасен. и позволить злоумышленнику прочитать любой файл, который у вас есть, включая пароли и т. д. хотя бы сделай это

$file=basename($_REQUEST["file"]);
0 голосов
/ 10 сентября 2010

Насколько мне известно, ansi не является допустимой кодировкой передачи контента.Поскольку вы хотите сохранить содержимое файла как есть (и это содержимое может содержать длинные строки и окончания строк CRLF), вы, вероятно, захотите использовать binary

0 голосов
/ 10 сентября 2010

Насколько я знаю, в этом случае блокнот удаляет эти окончания строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...