javascript - 从网站在主机服务器上创建文本文件

标签 javascript java php server user-input

我试图让用户能够将文本文件写入网站主机服务器上的目录。用例如下:

  1. 用户访问 www.example.com/createtext
  2. 用户在文 native 器人中输入他们想要保存的内容,例如“Hello”
  3. 托管网站的服务器会在其目录之一中创建一个文本文件。
  4. 在服务器上,C:/somedirectory/dailytexts/中现在有一个文本文件,其中写入了“Hello”

我目前编写了一个简单的页面,其中包含一个表单,该表单将接收文本信息并将其保存到具有当前日期名称的文本文件中。

<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 之类的东西来完成,那也可以。

最佳答案

据我所知,浏览器中的 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),或 echoing/readfile-ing HTML 页面。

关于javascript - 从网站在主机服务器上创建文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50533937/

相关文章:

php - 如何在超链接 codeigniter 中应用类 "active"

php - 如何循环遍历 PHP 代码以将 JSON 数据插入 MySQL 数据库

javascript - 无法在回调中设置变量值

javascript - 我如何重构这些脚本标签?

java - 如何使用JSP/Servlet将文件上传到服务器?

java - Spring Data PostgreSQL Key already exists 错误

javascript - 页面宽度比视口(viewport)宽,空白在右边

javascript - 如何删除 flex 盒模型中 flex 元素之间的空格

java - 如何强制 Android 的文本转语音从手机的顶部扬声器中发出,就像普通电话一样

php - 选择嵌套查询 CodeIgniter