繁体   English   中英

将 HTML/DOM 与 node.js 连接

[英]Connecting HTML/DOM with node.js

我试图找到一种使用 node.js 写入文本文件的方法,但我试图从 HTML DOM 获取输入。 如何使用 fs.writeFile 将 output 从 DOM 写入文本文件?

这是一些不起作用的代码,但认为它可能是相关的。 谢谢

<h3>A demonstration of how to access a Text Field</h3>

<input id="myText">

<button onclick="myFunction()">Try it</button>

<script>

const fs = require('fs')

function myFunction() {
  var content = document.getElementById("myText").value;
}

fs.writeFile('./test.txt', content, err => {
    if(err){
        console.log(err);
        return
    }
})

</script>

您不能直接从浏览器将文件写入本地计算机。
这将是一个巨大的安全问题。
*您也不能在客户端浏览器上使用fs

相反,您从浏览器获取输入,并将其发送到您的服务器(NodeJ),并在服务器端使用fs.writeFile() ,这是允许的。

你可以做的是:

  1. 创建链接并提示下载。
  2. 发送到服务器并响应下载。
  3. 使用像Electron这样的原生环境来让 NodeJs 在本地写入本地计算机。

我假设你想做的是1
在这种情况下你可以简单地做:

function writeAndDownload(str, filename){
    let yourContent = str
    //Convert your string into ObjectURL
    let bom = new Uint8Array([0xef, 0xbb, 0xbf]); 
    let blob = new Blob([bom, yourContent], { type: "text/plain" });
    let url = (window.URL || window.webkitURL).createObjectURL(blob);
    //Create a link and assign the ObjectURL
    let link = document.createElement("a");
    link.style.display = "none";
    link.setAttribute("href", url);
    link.setAttribute("download", filename);
    //Automatically prompt to download
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
}

writeAndDownload("Text you want to save", "savedData")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM