如何在 HTML 中使用 fs.writeFile(使用 node.JS)?

How do I use fs.writeFile in HTML (using node.JS)?

所以我已经就这个主题搜索了几个小时,但仍然没有找到任何真正的方法来实现我在这里想要做的事情。

简单地说,我只想通过使用 HTML 中的按钮将一些文本写入文本文件。这是我的:

<!DOCTYPE html>
<html>
<head>
    <title>TEST</title>
</head>
<body>

<button onclick="write_text()">WRITE FILE</button>

<script>
    function write_text(){
        var fs = require('fs');

        fs.writeFile("test.txt", "okay this is epic", function(err){
            if (err) return console.log(err);
            console.log("Nice");
        });
    };
</script>

</body>
</html>

我不确定为什么这不起作用,我是否需要为按钮引用的功能制作一个单独的 .js 文件?

如有任何帮助,我们将不胜感激, 谢谢

编辑:我正在尝试将文件保存到我的 GoDaddy 服务器,以便我以后可以访问它,而不仅仅是下载文件。在本地测试它,它应该在我的 html 文档的目录中创建一个文件。

你不能按照你想要的方式来做(不是服务器端,没有节点,然后在这种情况下没有 fs),但是有一个创建 blob 的解决方法:

function downloadURL(url, name) {
  var link = document.createElement("a");
  link.download = name;
  link.href = url;
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
  delete link;
}

function downloadFile() {
  var data = "okay this is epic";
  var blob = new Blob([data], {type: 'text/txt'});
  var url  = window.URL.createObjectURL(blob);
  downloadURL(url, "test.txt");
}

在您的按钮中调用 downloadFile()

如前所述,你做的不对。 很重要的一点是 node.js 是一个 运行时环境 ,简单地把一个 HTML 带有 JS 代码的文件放在 GoDaddy 上是不行的 "server-side", 因为代码运行在浏览器上而不是服务器上。

你真正想做的是如前所述使用 Blob 或做这样的事情(如果你想使用 node.js):

var express = require('express')
var app = express()

app.post('/<your_path>', function (req, res) {
  writeToFilexx(/*Here you may want to pass data using body parser*/)
})
/* 

Here you will start the server 

*/

请注意,writeToFilexx 是您必须使用 fs 实现的功能。 在客户端,您必须向服务器发送一个请求,其中包含您要写入文件的数据。 它是这样的: 1.客户端向服务器端发送数据。 2. 服务器获取数据(处理请求)。 3.服务器进程,存储数据。

您可能已经猜到了,文件将保存在服务器上,而不是客户端的 PC 上。