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

Posted

技术标签:

【中文标题】如何在 HTML 中使用 fs.writeFile(使用 node.JS)?【英文标题】:How do I use fs.writeFile in HTML (using node.JS)? 【发布时间】:2019-02-11 04:32:51 【问题描述】:

所以我在这个话题上搜索了几个小时,但仍然没有找到任何真正的方法来实现我在这里尝试做的事情。

简单地说,我只想通过使用 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 文档的目录中创建一个文件。

【问题讨论】:

HTML 在 浏览器 中运行。 Node.js 在服务器上运行。 你不能。节点是服务器端,HTML 客户端。确保你理解这个概念。 【参考方案1】:

你不能以你想要的方式来做(不是服务器端,没有节点,然后在这种情况下没有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()

【讨论】:

我明白了...但问题是我正在尝试弄清楚这将如何保存到托管我的网站的服务器的文件目录中,以便我以后可以访问它。 知道了。好吧,您确实需要了解这些概念,主要是客户端和服务器如何通信以及它们的角色。这里不告诉你,因为它的历史很长......但为了简化,客户端会向服务器发出请求(例如http)为你保存文件,然后你使用fs【参考方案2】:

如前所述,您没有做对。 说 node.js 是一个 运行时环境 非常重要,并且简单地将带有 JS 代码的 HTML 文件放在 GoDaddy 上并不能使其成为“服务器端”,因为代码在浏览器上运行而不是在服务器上。

您真正想要做的是使用前面所述的 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 上。

【讨论】:

以上是关于如何在 HTML 中使用 fs.writeFile(使用 node.JS)?的主要内容,如果未能解决你的问题,请参考以下文章

在 fs.writeFile([option]) 中,“选项参数”通常如何工作?

Node.js - 文件系统 - 在 fs.writeFile() 中使用变量

node js fs模块

fs.writeFile 在新创建的 vue 项目中不起作用[重复]

fs.writeFile 没有错误,但是写入文件失败

为啥节点 10 强制在 fs.writeFile() 上传递回调?