У меня есть приложение, и в этом приложении я хочу использовать механизм загрузки файлов.
Мое требование:
Как только файл загружен, его имя будет изменено на что-то уникальное, например, uuid4 (). Я сохраню это имя в базе данных позже.
Я написал что-то подобное, однако у меня есть пара вопросов:
const multer = require('multer');
const upload = multer();
router.post('/', middleware.checkToken, upload.single('file'), (req,res,next)=>{
// key:
// file : "Insert File Here"
console.log("req:");
console.log(req.file);
const str = req.file.originalname
var filename = str.substring(0,str.lastIndexOf('.'));
// I will use filename and uuid for storing it in the database
// I will generate unique uuid for the document and store the document
// with that name
var extension = str.substring(str.lastIndexOf('.') + 1, str.length);
// HERE!
res.status(200).json();
})
Я видел примеры его хранения на диске:
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, '/tmp/my-uploads')
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now())
}
})
var upload = multer({ storage: storage })
Однако, насколько я понял, это конфигурация вне вызова API. Это означает, что я не могу изменить его каждый раз, когда я вызываю этот API. Я хочу присвоить файлу разные имена, и мне нужно это имя (uuid), чтобы сохранить это имя в базе данных.
Как сохранить такую функциональность?