簡體   English   中英

我可以同時使用Body-parser和Formidable嗎?

[英]Can I use body-parser and Formidable at the same time?

我想幾天解決問題,但聽不懂。 我有一個使用NodeJS和ExpressJS創建的網站,並且使用body-parser處理表單。

    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;

因此,使用此方法可以處理表單值。 但是現在,我需要使用可結點的節點來解析用戶的圖像。 問題是,我是否可以僅將某種強大的圖像用於圖像,將身體解析器用於表單? 或者,誰能幫助我克服困難,以了解如何處理表格並將值附加到變量上?

您可能需要一些時間來學習/練習強大的模塊。 看到這個URL: https : //github.com/felixge/node-formidable

是的,強大可用於處理表單字段和文件上傳,包括多個文件上傳。 body-parser中間件不能處理多部分-https: //github.com/expressjs/body-parser 在這種情況下,我建議您使用強大的降體分析器。

查看下面的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'));
});

如果願意,您可以同時使用body-parserformidable的功能。 您可以將艱巨的功能僅用於某些特定路線,並在其余路線上繼續使用body-parser。 下面,我顯示了僅對一條路徑使用強大的代碼:

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));
});

看一下此鏈接: https : //github.com/utatti/express-formidable/issues/1

暫無
暫無

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

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