2016-03-29 6 views
2

Ich benutze Knoten js mit Express-Framework und Rest api für Rest API-Client Ich benutze Postman-Erweiterung mit Chrom-Browser Hier kann ich Werte von erhalten Option "x-www-form-urlencoded" aber ich bin nicht in der Lage, Werte von "Formulardaten" zu erhalten, ich will Werte von "Formulardaten" -Option bekommen und muss auch Bilddatei hochladen. bitte helfen Sie mir, dies zu erreichen. Ich möchte Werte von "Formulardaten" -Option und auch Bild erhalten. Bitte hilf mir. Unten habe ich Code erwähnt, was ich benutzt habe. enter image description hereWie bekomme ich die Werte von Postman Erweiterung "Form-Daten" -Werte

var express = require('express'); 
var path = require('path'); 
var favicon = require('static-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var http = require('http').Server(app); 
var mysql = require('mysql'); 
var util = require('util'); 
var trim = require('trim'); 
var validator = require('validator'); 
var bodyParser = require('body-parser'); 
var Ingest  = require('ingest'); 
var multer  = require('multer'); 
var upload = multer({ dest: 'uploads/' }); 
var type = upload.single('recfile'); 
passport = require('passport') 
, LocalStrategy = require('passport-local').Strategy; 

async = require('async'); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ 
    extended: true 
})); 

app.post('/upload', function(req, res){ 
    console.log(req.file); // "form-data" values not able to get here 
    console.log(req);// "form-data" values not able to get here 
    console.log('body : '+JSON.stringify(req.body));// "form-data" values not able to get here 
}); 

i gesetzt keinen Inhaltstyp in Postbote Header

app.post('/upload', function(req, res){ 
    console.log('req.headers \n '+JSON.stringify(req.headers));  
    console.log('req.body.file :- '+req.body.file); 
    console.log('\n\n req.body :- '+JSON.stringify(req.body)); 
}); 

ich das unten stehende Ergebnis für den obigen Code bekam. req.headers

{"host":"localhost:3001","connection":"keep-alive","content length":"5808","cache-control":"no-cache","origin":"chrome-extension://mkhojklkhkdaghjjfdnphfphiaiohkef","password":"password","user-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36","username":"User2","content-type":"multipart/form-data; boundary=----WebKitFormBoundaryV4zAIbjEyKYxLRWe","accept":"*/*","accept-encoding":"gzip, deflate","accept-language":"en-US,en;q=0.8","cookie":"connect.sid=s%3Atz4f1ZgJkaAjuDD1sOkMB9rr.Z8EUIyxEcr0EyFQL96v0ExGRidM3SAVTx8IIr52O0OI"} 

req.body.file: - undefined

req.body: - {}

Antwort

1

aktualisieren habe ich Lösung mit Hilfe des folgenden Code

var express = require('express'); 
    var router = express.Router(); 
    var util = require("util"); 
    var fs = require("fs"); 
    var formidable = require('formidable'); 
    var path = require('path'); 

    router.post("/upload", function(req, res, next){ 
    var form = new formidable.IncomingForm(); 
    form.parse(req, function(err, fields, files) { 
     // `file` is the name of the <input> field of type `file` 
     console.log(files); 
     console.log(fields); 
     res.writeHead(200, {'content-type': 'text/plain'}); 
     res.write('received upload:\n\n'); 
     res.end(util.inspect({fields: fields, files: files})); 
    }); 
    form.on('error', function(err) { 
     console.error(err); 
    }); 
    form.on('progress', function(bytesReceived, bytesExpected) { 
     var percent_complete = (bytesReceived/bytesExpected) * 100; 
     console.log(percent_complete.toFixed(2)); 
    }); 
    form.on('end', function(fields, files) { 
     /* Temporary location of our uploaded file */ 
     var temp_path = this.openedFiles[0].path; 
     /* The file name of the uploaded file */ 
     var file_name = this.openedFiles[0].name; 
     /* Location where we want to copy the uploaded file */ 
     var new_location = 'public/images/'; 

     fs.readFile(temp_path, function(err, data) { 
      fs.writeFile(new_location + file_name, data, function(err) { 
       fs.unlink(temp_path, function(err) { 
        if (err) { 
         console.error(err); 
         } else { 
         console.log("success!"); 
        } 
       }); 
      }); 
     }); 
    }); 
}); 
0

Ja das gleiche Problem mir mehrmals und nach meiner Erfahrung vor Ihnen do't Legen Sie den Inhaltstyp im Post-Manager-Header fest, da dieser nicht definiert sein sollte und der Knotenserver den Inhaltstyp automatisch entsprechend der Anforderung festlegt. Wenn Sie den Inhaltstyp festlegen, erhalten Sie keine Image- und anderen Daten auf dem Node-Server.

  1. Sie erhalten das Bild von der req.body.file
  2. Sie die anderen Daten von req.body
  3. app.use (mehrteiliger()) in Middle

Verfahren erhalten, wie Multipart als Middleware verwenden

  1. var multipart = require ('connect-multiparty');
  2. global.app = module.exports = express();
  3. App.use (mehrteilig());
+0

Dank für deine Antwort. Noch habe ich keine Werte von "Formulardaten" -Option erhalten. Ich erwähnte die Ausgabe für req.body.file und req.body in obiger Frage. Bitte geben Sie mir einen Vorschlag – raj

+0

Bitte verwenden Sie die multer als Middleware app.use (multipart()) wird es auf jeden Fall funktionieren .. –

+0

Ich bin neu zu Knoten js erklären Sie mir bitte, wie Sie diese multer als Middleware app.use (multipart()) – raj

0

Ich glaube, Sie brauchen Körper-Parser für diesen Einsatz und müssen auch Ihre app.js als

app.use(bodyParser.json());  // to support JSON-encoded bodies 
app.use(bodyParser.urlencoded({  // to support URL-encoded bodies 
    extended: true 
})); 
+0

ich denke, das wird helfen http://stackoverflow.com/questions/5710358/how-to-retrieve-post-query-parameters-in-express –

+1

Ich bin bereits dieses verwendet Code, es gibt keine Ausgabe für mich.Ich bin nicht in der Lage, Werte noch von "Formulardaten" zu erhalten – raj

+0

ist der Feldname in Ihrem Beitrag Mann ist dasselbe wie Sie in multer verwenden, d. h. ** recfile ** –

Verwandte Themen