Создать текстовый файл на хост-сервере с веб-сайта - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь дать пользователям возможность записать текстовый файл в каталог на хост-сервере сайта.Вариант использования будет выглядеть следующим образом:

  1. Посещения пользователей www.example.com/createtext
  2. В текстовом боте пользователи вводят то, что они хотели бы сохранить, например «Hello»
  3. Сервер, на котором размещен веб-сайт, создает текстовый файл в одном из своих каталогов.
  4. На сервере теперь есть текстовый файл в C: / somedirectory / dailytexts / with "Привет "написано внутри него

В настоящее время я написал простую страницу с формой, которая будет принимать текстовую информацию и сохранять ее в текстовом файле с именем текущей даты.

<script language="Javascript">
    var time = new Date();
    var formattedTime = time.toLocaleTimeString();

    function download(filename, text) {
      var pom = document.createElement('a');
      pom.setAttribute('href', 'data:text/plain;charset=utf-8,' + 

    encodeURIComponent(text));
      pom.setAttribute('download', formattedTime);

      pom.style.display = 'none';
      document.body.appendChild(pom);

      pom.click();
      document.body.removeChild(pom);
    }
</script>

<form id="form" class="topBefore" onsubmit="download(this['name'].value, this['text'].value)">
    <textarea id="message" type="text" placeholder="Hello" name="text"></textarea>
    <input id="submit" type="submit" value="Download Text File">
</form>

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

Есть ли еще способ сделать это?В частности, только с JavaScript или Java.Но если это нужно сделать с чем-то вроде PHP, то это тоже сработает.

1 Ответ

0 голосов
/ 25 мая 2018

AFAIK, JS в браузере позволяет выполнять вещи только на стороне клиента и не изменять содержимое сервера без использования ... (например) сценариев PHP на стороне сервера.

Это решение (сейчас) использует только HTML и PHP, исключая необходимость в JS.

HTML (изменено) :

<form id="form" class="topBefore" action="createtext.php" method="GET">
<textarea id="message" type="text" placeholder="Hello" name="name"></textarea>
<textarea id="message2" type="text" placeholder="Hello" name="text"></textarea>
<input id="submit" type="submit" value="Download Text File">

PHP: (файл с именем createtxt.php )

if(isset($_GET['name']) && isset($_GET['text']))  {
    $filename = preg_replace('#[^A-Za-z0-9_-]#', '', $_GET['name']);
    $file = $_SERVER['DOCUMENT_ROOT']."/textfiles/$filename.txt";
    $f = fopen($file, 'w');
    fwrite($f, $_GET['text']);
    fclose($f);
    echo 'Success.';
}  else  {
    echo 'Error.';
}

Для создания файла требуется двапараметры - имя файла и содержимое, в то время как в HTML-файле вопроса был указан только один textarea.Так что теперь включено другое имя файла.JQuery / JS удаляется.Вместо этого форма теперь отправляет данные в createtext.php, который создает файл (fopen), записывает текст (fwrite) и отображает «Успех».- обратите внимание на две вещи:

  1. Мы сохраняем текстовый файл в папке с именем textfiles в том же каталоге, что и createtext.php.Папка должна существовать раньше - она ​​не будет создана автоматически, и PHP выдаст ошибку, если ее не будет.
  2. Вы можете заменить echo 'Success.'; другими действиями: например, перенаправлением на другую страницу или тем жестраница (header) или echo ing / readfile -ing HTML-страницы.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...