我试图让用户能够将文本文件写入网站主机服务器上的目录。用例如下:
- 用户访问 www.example.com/createtext
- 用户在文 native 器人中输入他们想要保存的内容,例如“Hello”
- 托管网站的服务器会在其目录之一中创建一个文本文件。
- 在服务器上,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
) 并回显“成功”。 - 这里请注意两件事:
- 我们将文本文件保存到名为
textfiles
的文件夹中,该文件夹与createtext.php
位于同一目录中。该文件夹必须以前就存在 - 它不会自动创建,如果不存在,PHP 将抛出错误。 - 您可以将
echo 'Success.';
替换为其他操作:例如重定向到另一个页面或同一页面(header
),或echo
ing/readfile
-ing HTML 页面。
关于javascript - 从网站在主机服务器上创建文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50533937/