如何在 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 上。
所以我已经就这个主题搜索了几个小时,但仍然没有找到任何真正的方法来实现我在这里想要做的事情。
简单地说,我只想通过使用 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 上。