Node JS)未定义的图像上传问题
Node JS) Image upload issue with undefined
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);
});
但我得到的是
'不明确的
{}'
我怎么了?
我正在搜索很多问题,其中大多数都说我必须使用 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 man 来测试它。
最后,感谢 'Lazarev Alexandr' 我解决了这个问题
下图可以作为证明。
我希望我的问题对像我这样的新手开发者有所帮助。谢谢!
正如描述的那样here:
NOTE: Multer will not process any form which is not multipart (multipart/form-data).
因此,如果您想使用 multer
,则不应将图像作为二进制流发送。您应该改用多部分表单请求。以下是使用 Postman 工具实现它的方法:
另外,我建议你使用最新版本的multer
。在终端中通过 运行 此命令更新它:
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);
});
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);
});
但我得到的是 '不明确的 {}'
我怎么了? 我正在搜索很多问题,其中大多数都说我必须使用 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 man 来测试它。
最后,感谢 'Lazarev Alexandr' 我解决了这个问题
下图可以作为证明。
我希望我的问题对像我这样的新手开发者有所帮助。谢谢!
正如描述的那样here:
NOTE: Multer will not process any form which is not multipart (multipart/form-data).
因此,如果您想使用 multer
,则不应将图像作为二进制流发送。您应该改用多部分表单请求。以下是使用 Postman 工具实现它的方法:
另外,我建议你使用最新版本的multer
。在终端中通过 运行 此命令更新它:
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);
});