Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以同时使用body解析器和forgible吗?_Javascript_Node.js_Express_Formidable_Body Parser - Fatal编程技术网

Javascript 我可以同时使用body解析器和forgible吗?

Javascript 我可以同时使用body解析器和forgible吗?,javascript,node.js,express,formidable,body-parser,Javascript,Node.js,Express,Formidable,Body Parser,几天来我一直想解决一个问题,但有些事情我不明白。 我有一个使用NodeJS和ExpressJS创建的网站,为了处理表单,我使用body解析器 var adName = req.body.adName; var adMessage = req.body.adMessage; var phone = req.body.phone; var rawPrice = req.body.price; var rawCurrency = req.body.currenc

几天来我一直想解决一个问题,但有些事情我不明白。 我有一个使用NodeJS和ExpressJS创建的网站,为了处理表单,我使用body解析器

    var adName = req.body.adName;
    var adMessage = req.body.adMessage;
    var phone = req.body.phone;
    var rawPrice = req.body.price;
    var rawCurrency = req.body.currency;
所以,使用这个方法我处理表单值。 但现在,我需要使用node解析来自用户的图像。问题是,我能用什么方法吗
仅用于图像和表单的正文解析器?或者,有人能帮助我理解如何处理表单和将值附加到变量吗

您可能需要花一些时间学习/练习这个强大的模块。请参阅此url:

是的,它可以用于处理表单字段和文件上载,包括多个文件上载。主体解析器中间件不处理多部分-。在这种情况下,我建议您使用强大的drop body解析器

    var adName = req.body.adName;
    var adMessage = req.body.adMessage;
    var phone = req.body.phone;
    var rawPrice = req.body.price;
    var rawCurrency = req.body.currency;
看看下面的express应用程序是否能帮助您解决问题

var formidable = require('formidable'),
    util = require('util'),
    express = require('express'),
    app = express();

app.set('port', process.env.PORT || 3600);
app.get('/', function (req, res) {
    res.send(     
    '<form action="/upload" enctype="multipart/form-data" method="post">'+
    '<input type="text" name="adName" placeholder="adName"><br>'+
    '<input type="text" name="adMessage" placeholder="adMessage"><br>'+
    '<input type="text" name="phone" placeholder="phone"><br>'+
    '<input type="text" name="rawPrice" placeholder="rawprice"><br>'+
    '<input type="text" name="rawCurrency" placeholder="rawcurrency"><br>'+
    '<input type="file" name="upload" multiple="multiple"><br>'+
    '<input type="submit" value="Upload">'+
    '</form>'
  );
});

app.post('/upload', function(req, res){
    var form = new formidable.IncomingForm();
    form.uploadDir = __dirname + "/data";
    form.parse(req, function(err, fields, files) {
        //fields is an object containing all your fields, do waht ever you want with them from here
        //file is an object containing properties of your uploaded file
      res.send(util.inspect({fields: fields, files: files}));
      console.log('file uploaded : ' + files.upload.path + '/' + files.upload.name);
      console.log('Fields : ' + fields.adName);//you can access all your fields
    });
});

//starting server
app.listen(app.get('port'), function () {
    console.log('Express is listening: http://localhost:%s;', app.get('port'));
});
var-leverable=require('leverable'),
util=require('util'),
express=require('express'),
app=express();
应用程序集('port',process.env.port | | 3600);
app.get('/',函数(req,res){
res.send(
''+
“
”+ “
”+ “
”+ “
”+ “
”+ “
”+ ''+ '' ); }); app.post('/upload',函数(req,res){ var form=new.IncomingForm(); form.uploadDir=\uuuu dirname+“/data”; 解析(请求、函数(错误、字段、文件){ //字段是一个包含所有字段的对象,您想从这里使用它们做什么 //文件是包含上载文件属性的对象 res.send(util.inspect({fields:fields,files:files})); console.log('上传文件:'+files.upload.path+'/'+files.upload.name); console.log('Fields:'+Fields.adName);//您可以访问所有字段 }); }); //启动服务器 app.listen(app.get('port')、函数(){ console.log('Express正在侦听:http://localhost:%s,app.get('port'); });
如果您愿意,您可以同时使用
正文解析器
强大的
。您可以仅对某些特定的路由使用强大的,并在其余路由上继续使用主体解析器。下面我展示了仅在一条路线上使用“强大”所需的代码:

const formidableMiddleware = require('express-formidable');

app.post('/api/v1/uploadfile', formidableMiddleware(), async (req, res) => {
  const file = req.files.file;
  console.log('file info: ' + file);

  const fields = req.fields;
  console.log('fields = ' + JSON.stringify(fields));
});

看看这个链接:

Awww,我离得太近了!是的,现在我明白我的错误了!谢谢您的回复!我很高兴它能帮到你。那么更好的主体解析器呢?比它更好用吗(用于文件上传)?@Qasim-你可以用它来比较npm模块的质量、流行度和维护。在本例中,它将与我没有使用更好的主体解析器进行比较,并且不能使用确切名称的包进行比较,但是,在确定哪个包更适合您之前,您可能需要尝试任意数量的包。