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如下:
你觉得呢?有什么我想念的吗?{ “名字”:“光泽”, “版本”:“1.0.0”, “依赖”:{ “身体解析器”:“1.14.1”, “清除”:“”, “表达”:“3.5.1”, “fs”:“”, “multer”:“^ 0.1.6”, “mysql”:“”, “路径”:“”, “q”:“”, “请求”:“” }, “引擎”: { “node”:“0.10.x”, “npm”:“> 1.4.0” } }
最后,由于'Lazarev Alexandr',我解决了这个问题 下图可以证明。 我希望我的问题对我这样的新手开发者有所帮助。格拉西亚斯!
答案 0 :(得分:1)
正如描述here:
注意:Multer不会处理任何非多部分(多部分/表格数据)的表格。
因此,如果您想使用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);
});