Express Multer 文件上传 req.body 和 req.file 未定义
Express Multer file upload req.body and req.file undefined
我正在尝试使用 multer 上传文件,但没有请求正文或文件。有人知道我做错了什么吗?
这是 html
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file-uploader"/>
<input type="submit"/>
</form>
这是我的 js
const express = require('express');
const app = express();
const multer = require('multer');
const upload = multer({ dest: 'uploads/' });
// other stuff
app.post('/upload', upload.single('file-uploader'), (req, res, next) => {
console.log(req.file);
console.log(req.body);
res.send ({'asdf': 'sadf'});
});
在 Express 4 中,默认情况下,req.files 在 req 对象上不再可用。这是我强大的解决方案:
前端:标记:
<input type="file" id="file"/>
<button id="send-file">Send</button>
.JS:
//send file
var send_file = $("#send-file");
send_file.on("click", function(e) {
//file
var file = $("#file")[0].files[0];
//formdata
var fd = new FormData();
fd.append("file", file, "file_name");
//send file
$.ajax({
url: '/upload',
data: fd,
cache: false,
contentType: false,
processData: false,
type: 'POST'
})
.done(function(data) {
console.log(data);
console.log("Upload successfully");
});
});
return false;});
后端:
安装强大:npm install formidable --save
最后一步:
var express = require('express');
var app = express();
var path = require('path');
var fs = require('fs');
var formidable = require('formidable');
app.post('/upload', function(req, res) {
// create an incoming form object
var form = new formidable.IncomingForm();
// specify that we want to allow the user to upload multiple files in a single request
form.multiples = true;
// store all uploads in the /uploads directory
form.uploadDir = path.join(__dirname, './uploads');
// every time a file has been uploaded successfully,
// rename it to it's orignal name
form.on('file', function(field, file) {
fs.rename(file.path, path.join(form.uploadDir, file.name));
});
// log any errors that occur
form.on('error', function(err) {
console.log('An error has occured: 'n' + err);
});
// once all the files have been uploaded, send a response to the client
form.on('end', function() {
console.log(Date.now())
res.end('success');
});
// parse the incoming request containing the form data
form.parse(req);
});
相关文章:
- 节点.js快速删除 req.body 不起作用
- 在node.jsexpress应用程序中,req.body没有得到<text区域>价值
- 如何从未定义的表单中获取req.body
- post-router的req.body包含新行和冒号
- req.body使用MEAN Express 4.x和Node.js未定义
- 如何在js源节点上将数组作为req.body发送
- Sails.js req.files为空,req.body.image未定义
- 从中间件通过 req.body 传递变量
- express.js req.body 始终为空
- Reactjs req.body shows [object Object]
- req.body 没有给出这个名字
- 无法确定 req.body.name 的值 - 快速节点 JS
- 隐藏/禁用字段从 req.body 中消失(Express JS bodyParser)
- 将 req.body 属性复制到猫鼬模型中时出错
- Express 4 Multer / req.body 和 res.json 未定义
- 节点.JS req.body 字符串太长
- Express API - 验证 req.body 元素
- Nodejs - Req.body 未定义在 post 中,带有快速 4.9.0
- 我无法从nodejs + expressjs中的req.body获取数据
- Express Multer 文件上传 req.body 和 req.file 未定义