【发布时间】:2021-11-17 07:21:43
【问题描述】:
我在使用 nodejs 时遇到问题,当我想用图片发帖时,我收到一条错误消息“无法读取未定义的属性‘文件名’”我看不到我的错误在哪里。 这是我的 multer :
app.use(express.static('views/images'))
const storage = multer.diskStorage({
destination: 'views/images',
filename: function(req,file, cb){
cb(null, file.fieldname + '_'+ Date.now()+path.extname(file.originalname));
}
})
const upload = multer({storage: storage}).single('img');
这是我的 database.js
db.run(`
CREATE TABLE IF NOT EXISTS products (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
description TEXT,
image TEXT
)
`)
exports.uploadPost = function(name, description, Filename, callback){
const query = "INSERT INTO products('name', 'description', 'image') VALUES (?,?,?)"
const values = [name, description, Filename]
db.run(query,values, function(error){
callback(error)
})
}
和 app.js
app.post('/products/create', (req,res) => {
// req.file contains information of uploaded file
// req.body contains information of text fields, if there were any
upload(req, res, (err) => {
const name = req.body.name
const description = req.body.description
const Filename = req.file.filename
db.uploadPost(name, description, Filename, function(error){
console.log(req.Filename)
const id = this.lastID
res.redirect('/products/'+id)
})
})
})
和 HTML
<form action="/products/create" method="POST">
<div>
<label class="form-label" for="img">Select image:</label>
<input class="form-input" type="file" id="img" name="img" required>
</div>
</form>
【问题讨论】:
-
应该是
req.files.img.name -
你是什么意思?
-
而不是
req.file.filename -
我收到此错误.. 无法读取未定义的属性“img”
-
谢谢。它现在可以工作了,我错过了 html 中的 enctype="multipart/form-data"
标签: javascript node.js sqlite express multer