如何使用nodejs中的用户输入创建文件?
How to create a file using user input in nodejs?
我有一个文本区域,用户可以在其中键入他们的文本。一旦他们单击保存,文本区域中的内容就会发送到服务器端。在服务器端我想使用内容来创建一个文件。我有一个名为 "usercode" 的变量,它保存文本区域的内容。我创建了一个文件,
fs.wirteFile(name + "java", usercode, function(){})
命名文件名,由用户提供。这确实创建了一个文件,但是文件中唯一的东西是“[object Object]”。
这是我使用 jade 的客户端:
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 对象以访问请求中的 post 数据。
您需要通过该对象内的表单域名称访问 post 数据,因此如果您有一个名为 "myField" 的表单域,它的数据将在 req.body.myField
如果您只想将整个对象写入文件,您需要先使用 JSON.stringify(req.body)
对 JSON 对象进行字符串化
JSON.stringify
将转义字符串,您可以使用 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";
我有一个文本区域,用户可以在其中键入他们的文本。一旦他们单击保存,文本区域中的内容就会发送到服务器端。在服务器端我想使用内容来创建一个文件。我有一个名为 "usercode" 的变量,它保存文本区域的内容。我创建了一个文件,
fs.wirteFile(name + "java", usercode, function(){})
命名文件名,由用户提供。这确实创建了一个文件,但是文件中唯一的东西是“[object Object]”。
这是我使用 jade 的客户端:
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 对象以访问请求中的 post 数据。
您需要通过该对象内的表单域名称访问 post 数据,因此如果您有一个名为 "myField" 的表单域,它的数据将在 req.body.myField
如果您只想将整个对象写入文件,您需要先使用 JSON.stringify(req.body)
JSON.stringify
将转义字符串,您可以使用 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";