Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点JS)图像上载问题,未定义_Javascript_Node.js_Image_Undefined_Multer - Fatal编程技术网

Javascript 节点JS)图像上载问题,未定义

Javascript 节点JS)图像上载问题,未定义,javascript,node.js,image,undefined,multer,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 =

这是我处理上传图片的核心代码

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);
});
但我得到的是 “未定义 {}'

我怎么了? 我正在寻找很多问题,他们中的大多数人说我必须使用multer。。。但结果是一样的,没有任何变化

My package.json如下:

{ “名称”:“光之吻”, “版本”:“1.0.0”, “依赖项”:{ “正文分析器”:“1.14.1”, “清除”:“清除”, “快车”:“3.5.1”, “财政司司长”:“财政司司长”, “multer”:“^0.1.6”, “mysql”:“, “路径”:“, “q”:“, “请求”:” }, “发动机”:{ “节点”:“0.10.x”, “npm”:“>1.4.0” } }

你认为呢?我有什么遗漏吗

我用邮递员来测试。

多亏了“Lazarev Alexandr”,我终于解决了这个问题 下面的图片可以作为证明。 我希望我的问题能对像我这样的新手开发者有所帮助。格雷西亚斯!

如上所述:

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

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

另外,我建议您使用最新版本的
multer
。通过在终端中运行以下命令进行更新:

    app.post('/upload',function(request,response){
    console.log(request.file);
    console.log(request.body);
});
然后,删除
bodyParser
中间件用法,并使用
multer
本身。您的代码应该如下所示:

npm install multer@latest

如何将文件发送到服务器?通过表格?它是否有
multipart/form data
enctype?@LazarevAlexandr我不知道“multipart/form data”的真正含义?所以这可能是答案。。。那是什么…?如何将数据发送到服务器?来自html表单?我使用的是Post-man-Body二进制文件-.PNG@LazarevAlexandr@HassanAlthaf正如你所知,你的回答没有帮助。。。但您只需执行lolly,如果请求成功,该图像文件是否自动存储在服务器上?但它不同于我所知道的“www.domain.com/test.png”,但我的是“uploads/dsanfjkdlsaf”,请阅读以下文档:。这里描述了如何更改文件名。很抱歉,我无法更改,兄弟,我在以下位置续订一个:你能帮我吗?对不起,我现在有点忙,但我有空时会看一看。是的,我理解,谢谢你这么说,正如你告诉我的,我一遍又一遍地阅读文档。。。对不起我的愚蠢
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);
});