Как использовать fs.writeFile в HTML (используя node.JS)? - PullRequest
0 голосов
/ 06 сентября 2018

Так что я часами искал эту тему и до сих пор не нашел реального способа достичь того, что я пытаюсь сделать здесь.

Просто я просто хочу написать текст в текстовый файл с помощью кнопки в 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-документа.

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Как было сказано ранее, вы не делаете это правильно. очень важно сказать, что node.js - это среда выполнения , и простое размещение HTML-файла с кодом JS на 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. серверный процесс и хранит данные.

Как вы уже догадались, файл будет сохранен на сервере, а не на ПК клиента.

0 голосов
/ 06 сентября 2018

Вы не можете сделать это так, как хотите (не на стороне сервера, не на узле, тогда нет fs в этом контексте), но есть обходной путь, создающий большой двоичный объект:

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() на вашу кнопку.

...