从Node.js中的请求中提取POST参数

哈西特·拉达(Harshit Laddha)

我试图通过使用-(我使用了这个,因为在这里建议-因为我如何使用express js获取发布请求?从变量postData中的POST获取参数

在这里-如何检索POST查询参数?

var express = require('express');
var app = express();
var fs = require('fs');
var json = require('json');
app.use(express.json());       // to support JSON-encoded bodies
app.use(express.urlencoded()); // to support URL-encoded bodies

app.post('/shrib/:file/:data',function(req,res){
    var fileName = req.params.file;
    var data = req.params.data;
    req.on('data',function(data){ body+=data; } );
    req.on('end' ,function(){
        var postData = qs.parse(body);
        var writeStream = fs.createWriteStream(fileName);
        var postData = req.body.text;
        if(postData)
            console.log(postData);
        else    
            console.log("failed miserably");
        res.write(200);
        res.end();
    });
});
app.get('/shrib/:file',function(req,res){   
    var fileName = req.params.file;
    if(fileName != ''){
        var readStream = fs.createReadStream(fileName);
        var content;
        readStream.on('data',function(chunk){
            content+=chunk.toString();
            console.log(content);
        });
        readStream.on('end',function(){
            res.writeHead(200,{"Content-Type":"text/html"});
            res.write("<form id=\"submitForm\" method=\"POST\">");
            res.write("<textarea id=\"text\"rows=50 cols=50 >");
            console.log(content);
            if(content)
                res.write(content.toString());
            res.write("</textarea>");
            res.write("<input type=\"submit\" value=\"submit\" />");
            res.write("</form>");
            res.write("<script>");
            res.write("var windowLocation = location.href;");
            res.write("document.getElementById(\"submitForm\").action=windowLocation + \'/data\';");
            res.write("</script>");
            res.end();
        });
    }else{
        res.writeHead(200);
        res.write("invalid/empty path name"); 
    }
});
app.listen(8080);

并收到此错误-

Error: Most middleware (like json) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.
    at Function.Object.defineProperty.get (/home/unknown/public_html/node/node_modules/express/lib/express.js:89:13)

我使用的是body解析器,在此之前我在这里阅读了一些解决方案,它给了我相同的错误中间件,我在全局安装了它,然后也遇到了同样的错误,然后我读到了有关json的信息,所以我使用了

npm install -g json

没用,那也是。然后我尝试添加依赖项-

{
  "name": "express_shrib.js",
  "version": "0.0.1",
  "description": "Creating Shrib Using Express",
  "main": "express_shrib.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/iamdeadman/nodejs.git"
  },
  "author": "",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/iamdeadman/nodejs/issues"
  },
  "homepage": "https://github.com/iamdeadman/nodejs",
  "dependencies": {
    "express": ">= 1.2.0",
    "json": ">= 9.0.0"
  }
}

并运行npm install仍然相同的错误-

Error: Most middleware (like json) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.
    at Function.Object.defineProperty.get (/home/unknown/public_html/node/node_modules/express/lib/express.js:89:13)

编辑**-使用新的body-parser模块进行编码

var express = require('express');
var app = express();
var fs = require('fs');
var bodyParser = require('body-parser');
app.use(bodyParser());
app.post('/shrib/:file/:data',function(req,res){
    var fileName = req.params.file;
    var data = req.params.data;
    req.on('data',function(data){ body+=data; } );
    req.on('end' ,function(){
        var postData = req.body;
        var writeStream = fs.createWriteStream(fileName);
        if(postData)
            console.log(postData);
        else{   
            console.log("failed miserably");
            console.log(postData);
        }
        res.writeHead(200);
        res.end();
    });
});
app.get('/shrib/:file',function(req,res){   
    var fileName = req.params.file;
    if(fileName != ''){
        var readStream = fs.createReadStream(fileName);
        var content;
        readStream.on('data',function(chunk){
            content+=chunk.toString();
            console.log(content);
        });
        readStream.on('end',function(){
            res.writeHead(200,{"Content-Type":"text/html"});
            res.write("<form id=\"submitForm\" method=\"POST\">");
            res.write("<textarea id=\"text\"rows=50 cols=50 >");
            console.log(content);
            if(content)
                res.write(content.toString());
            res.write("</textarea>");
            res.write("<input type=\"submit\" value=\"submit\" />");
            res.write("</form>");
            res.write("<script>");
            res.write("var windowLocation = location.href;");
            res.write("document.getElementById(\"submitForm\").action=windowLocation + \'/data\';");
            res.write("</script>");
            res.end();
        });
    }else{
        res.writeHead(200);
        res.write("invalid/empty path name"); 
    }
});
app.listen(8080);

在这里我得到

{}

在控制台中,这意味着主体对象出于某种原因为空。

mscdex

使用Express 4,主体解析中间件(就像其他以前内置的中间件一样)被提取到“ body-parser”模块中。但是,此新模块仅处理JSON和urlencoded表单提交,而不处理多部分内容。

如果你需要多的支持,你需要使用像连接,打杂multer连接多党(连接多党基本上是老快递bodyParser中间件)。

编辑:此外,name缺少textarea输入字段属性。这是必需的,否则该字段将不会与表格一起发送。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法在Node.js(Express)中提取请求数据

来自分类Dev

node.js中的POST请求

来自分类Dev

需要使用请求 npm 在 NODE js 中的 post 方法中将大量数据作为参数传递

来自分类Dev

在 node.js 中提取查询

来自分类Dev

从Python Lambda中的POST请求中提取参数

来自分类Dev

如何在Express Node JS中获取删除请求的参数

来自分类Dev

在 Node.js 中接收来自 Swift 的 POST 请求

来自分类Dev

修改Node.js请求对象参数

来自分类Dev

5参数AJAX请求node.js

来自分类Dev

如何从Node.js中的给定字符串中提取特定字符串

来自分类Dev

从 Node.js 中的 .rar 或 .zip 文件中提取所有文件名

来自分类Dev

解析来自Node js + handlebars的POST请求

来自分类Dev

输入数组的Node.JS POST请求

来自分类Dev

Node.js缺少POST请求的正文

来自分类Dev

解析来自Node js + handlebars的POST请求

来自分类Dev

jQuery + node.js表达POST请求

来自分类Dev

输入数组的Node.JS POST请求

来自分类Dev

如何在 Node.js 中从简单的 HTTPS 请求中构造和提取值?

来自分类Dev

Node.js从回调函数中提取值

来自分类Dev

Node.js:从JSON响应中提取数据

来自分类Dev

Node.js从日志文件中提取所有ipAddress

来自分类Dev

如何使用node.js从.list文件中提取数据

来自分类Dev

Zlib:Node.js 无法从 python 中提取压缩数据

来自分类Dev

在Node.js中剥离参数,然后将其添加到请求中

来自分类Dev

如何在node.js中的每个请求中添加其他参数

来自分类Dev

如何修复对Node.js服务器的提取请求?

来自分类Dev

NODE JS取消请求

来自分类Dev

在react js中,如何将带有参数的axios GET方法请求发送到Node js,在Node js中,如何获取这些参数

来自分类Dev

请求过程中Node JS的性能

Related 相关文章

热门标签

归档