节点JS)未定义的图片上传问题
var http = require('http'); var express = require('express'); var request = require('request'); var mysql = require('mysql'); var bodyParser = require('body-parser'); var fs = require('fs'); var multer = require('multer'); var app = express(); app.use(bodyParser.json()); app.use(express.bodyParser()); app.use(app.router); app.use(multer( {dest:'./uploads/', onFileUploadStart : function(file){ console.log('File recieved:'); console.log(file); }, onFileUploadData:function (file,data){ console.log('Data recieved'); }, onParseEnd: function(req,next){ next(); } })); app.use(express.static(__dirname+"/public")); app.post('/upload',function(request,response){ console.log(request.file); console.log(request.body); });
这是我上面处理上传图片的核心代码。
app.post('/upload',function(request,response){ console.log(request.file); console.log(request.body); });
但是我得到的是'undefined {}'
我怎么了? 我正在寻找许多问题,其中大多数人说我必须使用MULTER …但结果是一样的没有任何变化。
我的package.json如下:
{“name”:“photozzle”,“version”:“1.0.0”,“dependencies”:{“body-parser”:“1.14.1”,“clear”:“ ”,“express”:“3.5。 1“,”fs“:” “,”multer“:”^ 0.1.6“,”mysql“:” “,”path“:” “,”q“:” “,”request“:” “} “engines”:{“node”:“0.10.x”,“npm”:“> 1.4.0”}}
你认为? 有什么我失踪?
我正在使用post来testing它。
最后,我解答了这个感谢“拉扎列夫·亚历山大”下面的图片可以certificate。 我希望我的问题对像我这样的新手开发者会有所帮助。 格拉西亚斯!
正如这里所描述的那样:
注意:Multer不会处理任何不是多部分(multipart / form-data)的表单。
所以,如果你想使用multer
你不应该发送图像作为二进制stream。 您应该使用多部分表单请求。 下面是你如何使用Postman工具实现它:
另外,我build议你使用最新版本的multer
。 通过在terminal中运行此命令来更新它:
npm install multer@latest
之后,删除bodyParser
中间件的用法,并使用multer
本身。 你的代码应该是这样的:
var http = require('http'); var express = require('express'); var request = require('request'); var mysql = require('mysql'); var bodyParser = require('body-parser'); var fs = require('fs'); var multer = require('multer') var upload = multer({dest:'./uploads/'}); var app = express(); app.use(bodyParser.json()); app.use(app.router); app.use(express.static(__dirname+"/public")); app.post('/upload', upload.single('img'), function (req, res, next) { console.log(req.file); });