2016-07-31 2 views
0

Я настроил multer as;Переименование файлов с использованием multer

var storage = multer.diskStorage({ 
    destination: function(req, file, cb) { 
    cb(null, '../images/profile'); 
    }, 
    filename: function(req, file, cb) { 
    cb(null, req.body.username + '.jpeg'); // file does not get renamed 
    } 
}); 

var upload = multer({storage: storage}); 

// Route that uses multer 
router.post('/auth/signup/upload', upload.single('image'), function(req, res) { 
    console.log(req.body.username); // contains value 
    res.send(); 
}); 

Хотя имя req.body.us имеет значение, файл не переименовывается. Чего мне здесь не хватает?

+0

Если тест 'cb (null, Math.floor (Math.random() * 100) + '.jpeg')' - переименовать? –

ответ

1

Из multer инструкции:

Обратите внимание, что req.body, возможно, не были полностью не заполнены. Это зависит от того, что клиент передает поля и файлы на сервер.

К сожалению, я не верю, что есть хороший способ решить эту проблему. Вы можете попробовать переключить порядок полей в вашей HTML-форме, но это, вероятно, не приведет к последовательному поведению в браузерах. Вы также можете отправить имя пользователя в строке запроса (т. Е. POST файл http://foo.bar?username=me). После этого вы также можете вручную переместить файл или сохранить сопоставления между именами пользователей и файлами в другом месте.

Смежные вопросы