节点JS)未定义的图像上传问题

时间:2015-12-07 09:32:10

标签: javascript node.js image undefined 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 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”     }   }

你觉得呢?有什么我想念的吗?

我正在使用帖子来测试它。 enter image description here

最后,由于'Lazarev Alexandr',我解决了这个问题 下图可以证明。 我希望我的问题对我这样的新手开发者有所帮助。格拉西亚斯! enter image description here

1 个答案:

答案 0 :(得分:1)

正如描述here

  

注意:Multer不会处理任何非多部分(多部分/表格数据)的表格。

因此,如果您想使用multer,则不应将图像作为二进制流发送。您应该使用多部分表单请求。以下是使用Postman工具实现它的方法:

enter image description here

另外,我建议您使用最新版本的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);
});