【发布时间】:2018-04-09 18:33:42
【问题描述】:
我的上传器有问题。我认为所有带有代码的东西都是正确的,并且文件仍然没有在上传文件夹中创建。此外,当我尝试 console.log(req.files) 时,我得到一个空数组。我尝试在本地制作 代码如下:
const express = require("express"),
app = express(),
multer = require("multer"),
bodyParser=require("body-parser"),
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, './uploads/');
},
filename: function (req, file, callback) {
callback(null, file.fieldname + '-' + Date.now() + '.' + mime.extension(file.mimetype));
}
});
var upload = multer({ storage : storage }).array('userPic');
app.post("/postFormAct", isLoggedIn, function(req, res){
upload(req,res,function(err) {
console.log(req.files);
});
});
还有我的表格:
<form method="post" action="/postFormAct" enctype="multipart/form-data">
<input type="text" name="user"><br>
<input type="text" name="email"><br>
<input type="file" name="userPic"><br>
<input type="submit" value="Submit">
</form>
【问题讨论】:
-
一旦我添加了缺少的依赖项
mime和isLoggedIn,你的代码就对我有用,尽管我认为它们对你来说并没有丢失。您是否尝试过记录err以确认没有错误?您是否尝试过将日志记录到您的destination和filename函数中以查看它们是否被调用?可能是文件系统权限问题吗?您是否尝试过使用绝对路径而不是相对路径? -
我试过记录,没有任何错误。也许表单有问题,因为我尝试了每一个解决方案,每次我得到一个空数组或未定义的 req.files
-
你的表单很不错,但只需在提交和检查上方添加另一个
<input type="file" name="userPic"><br>。代码没有问题。我已经执行了你的代码并且它为我工作。仅出于测试目的删除 isLoggedIn 并执行代码。 -
好的,问题是其他模块阻止 multer 工作。现在它固定了。感谢您的帮助
标签: node.js express multer body-parser