Node.js Multer Имя файла - PullRequest
0 голосов
/ 03 июля 2018

Я хочу настроить имя файла моего приложения по значению ввода вместо имени поля.
Другими словами, я хочу изменить file.filename на что-то вроде req.body.my_field , где 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));

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Вы должны иметь доступ к объекту 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));
    }
});
0 голосов
/ 03 июля 2018

Я не совсем уверен, в чем ваша проблема, так как кажется, что ваш код в настоящее время делает то, что вы хотите (сохраните файл с отметкой времени). Если вы хотите избавиться от логирования req.body.my_field, удалите строку console.log(req.body.my_field);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...