Я пытаюсь переписать и загрузить файл .txt, когда пользователь отправляет следующую форму, но у меня проблема в последнем препятствии.
<form id="saveFile" action="index.php?download" method="POST" onsubmit="return false;"> <input type="submit" name="backupFile" id="backupFile" value="Save a file" /> <input type="hidden" name="textFile" id="textFile" /> </form>
Когда нажата кнопка отправки, я запускаю функцию jQuery, которая содержит следующий (упрощенный) код. Я вынул код того, что я фактически сохраняю, и заменил его простой строкой. Это устанавливает тип «скрытого» ввода и затем отправляет форму.
$("#textFile").val('This is the text I will be saving'); document.forms['saveJSON'].submit();
Когда форма отправляется, выполняется следующий PHP-код:
<?php if (isset($_GET['download'])) { $textData = $_POST["textFile"]; $newTextData = str_replace("\\","",$textData); $myFile = "php/data.txt"; $fh = fopen($myFile, 'w') or die("can't open file"); fwrite($fh, $newTextData); fclose($fh); header("Cache-Control: public"); header("Content-Description: File Download"); header("Content-Disposition: attachment; filename='".basename($myFile)."'"); header("Content-Type: application/force-download"); header("Content-Transfer-Encoding: binary"); readfile($myFile); } ?>
До fclose ($ fh); строка кода действительно работает нормально; Файл .txt был обновлен с необходимым новым содержимым и загрузкой файла. Однако, когда я открываю загруженный файл, он содержит текст файла .txt вместе с большим количеством содержимого с веб-страницы (index.php).
Например, файл может выглядеть так:
«Это текст, который я сохраню
Это h1 моего сайта
Вслед за остальной частью моего контента "
Кто-нибудь знает, что может быть причиной этого?