node.js - 如何使用 Multer 修复 req.file 未定义?
问题描述
我正在尝试使用multer制作文件上传REST API,文件将保存在diskStorage中。这是我的 HTML 表单的样子:
<form action="/notes" method="POST" enctype="multipart/form-data">
<h1>Share new notes!</h1>
<div style="height: 30px;"></div>
<!-- title -->
<h3>Title</h3>
<div class="input-group mb-3">
<input type="text" class="form-control" name="title">
</div>
<div style="height: 30px;"></div>
<h3>File</h3>
<input type="file" class="form-control-file" id="exampleFormControlFile1" name="file">
<button class="btn btn-light btn-lg btn-block">Submit</button>
</form>
话虽如此,这就是我的 app.js 中所有相关的东西——我已经需要所有相关的依赖项,正如你所看到的,我正在使用 mongoose 和 mongodb 来存储文件。我检查了很多次,据我所知没有任何语法错误,但它一直说 req.file 未定义:
app.use(fileUpload()); // Don't forget this line!
//upload multer middleware
const storage = multer.diskStorage({
destination:(req, file, cb) =>{
cb(null,'uploads')
},
filename:(req, file, cb)=>{
cb(null, file.fieldname+'-'+Date.now())
}
})
const upload = multer({ storage: storage });
app.post('/notes', upload.single('file'), (req, res, next)=>{
newNote = {
title: req.body.title,
file: {
data: fs.readFileSync(path.join(__dirname + '/uploads/' + req.file.filename)),
contentType: 'image/png'
}
}
Note.create(newNote, function(err, newPost){
if(err){
console.log(err)
res.render('notes/new')
}else{
res.redirect('/notes')
}
}) })
具体来说,这是错误一直在说:
TypeError: Cannot read property 'filename' of undefined
解决方案
推荐阅读
- reactjs - 发送 POST 请求时出错 - 端口是否正确?
- excel - 如何使用 VBA 单击“Google 搜索”按钮
- c# - 如何在 .NET Core / Blazor 上使用 C# 在 HTML 页面上突出显示和格式化 GraphQL 查询?
- python - 在不知道列表内容的情况下,多个列表需要交集
- linux - 从 linux 的命令行中修剪字符串中的最后一个单词
- uicollectionview - 在 `UIRefreshControl` 刷新时使用 `sectionHeadersPinToVisibleBounds` 会导致粘性标题的位置不正确
- if-statement - 一个 IF 语句,用于检查并执行 Windows 批处理文件中每个设置变量的命令
- android - 为什么列表视图后不能显示视图?
- python - 无法将函数返回值转换为 Python 类型
- python - Python 代码将变量传递给另一个 Python 可执行文件并返回输出