我遇到了Node JS的问题。
使用Apache / php模型,我能够创建一个独立的 save.php 文件(接受发布请求,保存到txt文件),而无需使用Apache服务器
<?php file_put_contents ( 'content.txt' , $_POST['myData']);?>
在Node中,我已经 server.js 开始提供我/ public中的任何文件:
var express = require('express');
var app = express();
app.use(express.static('public'));
app.use(express.static(__dirname + '/public'));
app.use(function(req,res, next){
if(req.accepts('html')){
res.status(404).sendFile(__dirname+'/public/404.html');
}
});
app.listen(process.env.PORT || 80);
如何制作 save.js 文件,例如/public/test_project1/save.js,可以在HTML表单提交上执行吗?
var fs = require('fs');
fs.writeFile("content.txt", ???post data???)
每次在/ public中制作新的js文件时,有没有办法避免在 server.js 中明确定义app.post()...我正在寻找一种架构,允许我创建一个节点服务器来托管/ public中的各种单独的项目文件
答案 0 :(得分:0)
首先,您需要为帖子请求创建一个端点,然后解析表单数据,一个选项可能是body-parser中间件,最后保存内容。
类似的东西:
var express = require('express');
var app = express();
var bodyparser = require("body-parser");
app.use(bodyparser.urlenconded({extended:true}); // middleware for parse form data
app.use(express.static('public'));
app.use(express.static(__dirname + '/public'));
app.post("/endpoint",function(req,res){
//myData is input name
var content = req.body.myData;
fs.writeFile("content.txt", content,function(err){
res.end("done");
})
})
app.use(function(req,res, next){
if(req.accepts('html')){
res.status(404).sendFile(__dirname+'/public/404.html');
}
});
app.listen(process.env.PORT || 80);
然后使用myData作为输入向/ endpoint发出POST请求。
答案 1 :(得分:0)
以下是我的想法 - 修改 server.js 以处理该文件夹中的所有POST请求。这有危险吗?
app.post('/:folder/:file',function(req, res){
filepath=__dirname+'/public/'+req.params.folder+'/'+req.params.file;
fs.stat(filepath, function(err, stat) {
if(err == null) {
console.log('File exists');
var anyFile=require(filepath)(req.body);
res.redirect(anyFile);
} else if(err.code == 'ENOENT') {
res.send('File does not exist.');
} else {
res.send('Error: '+ err.code);
}
});
});