簡體   English   中英

如何使用nodejs中的用戶輸入創建文件?

[英]How to create a file using user input in nodejs?

我有一個文本區域,用戶可以在其中輸入文本。 單擊它們后,將文本區域中的內容發送到服務器端。 在服務器端,我想使用內容創建文件。 我有一個名為“用戶代碼”的變量,其中包含文本區域的內容。 我創建一個文件,

fs.wirteFile(name + "java", usercode, function(){})

命名文件名,由用戶指定。 這確實會創建一個文件,但是文件中唯一的內容是“ [object Object]”。

這是我正在使用玉的客戶端:

extends layout

block content
div(id="ineditortxt")
    h1(name="headings") #{title}
    a(href='/signout', class='text-center new-account') Sign Out
    div(id="editor")
        |public class #{title}{
        |   public static void main(String[] args) {
        |   
        |   }
        |}
    script(src="src/ace.js", type="text/javascript")
    script(type="text/javascript").
        //var myRequest = new XMLHttpRequest();
        var editor=ace.edit("editor");
        editor.setTheme("ace/theme/monokai");
        editor.getSession().setMode("ace/mode/java");
        $(document).ready(function(){
            $("#save").click(function(event){
                var content = editor.getValue();
                $.ajax({
                    url:'/getcode',
                    type:'POST',
                    data: content,
                    jsonpCallback: 'callback'
                });
                event.preventDefault();
                return false;
                });
            });
    form(name="Save", id = "save")
        input(type="submit", value="Save")
    div(id="result")
        | 

這是服務器端,我沒有包含所有代碼,僅包含與此問題相關的代碼:

var express = require('express');
var router = express();
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var param = require('express-params');
var Parse = require('parse').Parse;
var http = require('http');
var fs = require('fs');
    router.post('/editor', function(req, res){
  name = req.body.newname;
  res.render('Editor', {title: "" + name});
});

router.post('/getcode', function(req, res){
  var usercode = req.body;
  fs.writeFile(name + ".java",  usercode, function(err){
    if(err){
      console.log(err);
    } else{
      console.log("The file is saved!");
    }
  })
  res.send({code: "" + usercode});
  console.log(usercode);
});

return router;
}

您實際上是將req.body對象寫入該文件,該文件是一個JSON對象,用於訪問請求中的發布數據。

您需要通過該對象內的表單字段名稱訪問發布數據,因此,如果您有一個名為“ myField”的表單字段,則該數據將在req.body.myField可用

如果您只想將整個對象寫入文件,則需要首先使用JSON.stringify(req.body)對JSON對象進行字符串化

JSON.stringify將轉義您可以通過使用unescape(string)進行unescape(string)來修復的unescape(string)

在客戶端,代碼應為:

$(document).ready(function(){
            $("#save").click(function(event){
                var content = editor.getValue();
                console.log("This is content: " + content);
                $.ajax({
                    url:'/getcode',
                    type:'POST',
                    data: {'code': content},
                    processData: 'false',
                });
                event.preventDefault();
                return false;
                });
            });

在服務器端,代碼應為:

 router.post('/getcode', function(req, res){
  var usercode = req.body.code;
  newname = name+".java";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM