我想通过输入值而不是字段名来自定义应用程序的文件名。
换句话说,我想用 req.body.my_field 这样的东西来更改 file.filename ,但my_field是输入的名称。
最后,我想要这样的东西:
"filename": "value_of_my_field-1530606094020.jpg",
"path": "uploads\\value_of_my_field-1530606094020.jpg",
注意到my_field的值出现在控制台上。
我需要一些帮助。
这是我的代码:
var express = require('express')
var multer = require('multer')
const path = require('path')
// Init app
var app = express()
const port= 3000
// Set storage engine
const storage = multer.diskStorage({
destination: './uploads/',
filename: function(req, file, cb){
cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname));
}
});
// Init upload
const upload = multer({
storage: storage,
limits:{fileSize:1000000},
});
app.post('/upload', upload.single('myImage'), function (req, res, next) {
if(req.file == undefined){
res.json({'Error': 'No File Selected!'});
} else {
res.json(req.file);
console.log(req.body.my_field);
}
})
app.listen(port, () => console.log('server started on port '+ port));
预先感谢
答案 0 :(得分:0)
我不太确定您的问题是什么,因为您的代码当前正在执行您想要的操作(使用时间戳保存文件)。如果要摆脱req.body.my_field
的日志记录,请删除行console.log(req.body.my_field);
答案 1 :(得分:0)
您应该能够访问文件名功能中的req
对象。所以你可以做这样的事情-
// Set storage engine
const storage = multer.diskStorage({
destination: './uploads/',
filename: function(req, file, cb){
cb(null, req.body.my_field + '-' + Date.now() + path.extname(file.originalname));
}
});