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);
});