2016-09-06 2 views
1

Я пытаюсь загрузить несколько изображений с помощью Multer. Все работает так, как ожидалось, за исключением того, что загружается только один файл (последний выбранный файл).Загрузка нескольких файлов с помощью Multer

HTML

<form class='new-project' action='/projects' method='POST' enctype="multipart/form-data"> 
    <label for='file'>Select your image:</label> 
    <input type='file' multiple='multiple' accept='image/*' name='uploadedImages' id='file' /> 
    <span class='hint'>Supported files: jpg, jpeg, png.</span> 
    <button type='submit'>upload</button> 
</form> 

JS

//Define where project photos will be stored 
var storage = multer.diskStorage({ 
    destination: function (request, file, callback) { 
    callback(null, './public/uploads'); 
    }, 
    filename: function (request, file, callback) { 
    console.log(file); 
    callback(null, file.originalname) 
    } 
}); 

// Function to upload project images 
var upload = multer({storage: storage}).any('uploadedImages'); 

// add new photos to the DB 
app.post('/projects', function(req, res){ 
    upload(req, res, function(err){ 
    if(err){ 
     console.log('Fucken bollocks'); 
     console.log(err); 
     return; 
    } 
    console.log(req.files); 
    res.end('Your files uploaded. Fuck yeah!!'); 
    console.log('Yep yep!'); 
    }); 
}); 

Я получаю чувство, что я что-то очевидное недостающее ...

EDIT

код Я попытался следующие помощь Сайед в :

HTML

<label for='file'>Select your image:</label> 
<input type='file' accept='image/*' name='uploadedImages' multiple/> 
<span class='hint'>Supported files: jpg, jpeg, png.</span> 
<input type="submit" value="uploading_img"> 

JS

multer = require('multer'), 

var upload = multer(); 

app.post('/projects', upload.array('uploadedImages', 10), function(req, res, err) { 
if (err) { 
    console.log('error'); 
    console.log(err); 
} 
var file = req.files; 
res.end(); 
console.log(req.files); 

});

ответ

0

Здесь вы идете для этого примера:

var multer = require('multer'); 
var upload = multer(); 

router.post('/projects', upload.array('uploadedImages', 10), function(req, res) { 
    var file = req.files; 
    res.end(); 
}); 

<form action="/projects" method="post" enctype="multipart/form-data"> 
    <input type="file" name="uploadedImages" value="uploading_img" multiple> 
    <input type="submit" value="uploading_img"> 
</form> 

Посетите для получения дополнительной информации о Multer.

+0

Благодаря Сайед, но я просто попытался это и получить эту ошибку в консоли: ошибка '[Function: следующая] [{имя_поля: 'uploadedImages', ORIGINALNAME: 'me.jpg', кодирования: '7bit' , mimetype: 'image/jpeg', buffer: , размер: 98305}] ' –

+0

Вы пробовали только мой пример или применили свой код? – Noman

+0

Я только что добавил код, который я попробовал в своем оригинальном посте. То же, что и у вас, более или менее, но он не работает. –

0

Я думаю, что для каждого файла, который вы хотите загрузить, вы reclick:

<input type='file' multiple='multiple' accept='image/*' name='uploadedImages' id='file' /> 

Если вы сделаете это, то только последний выбранный файл будет загружен, как вы перезаписать предыдущие выбранные файлы.

Чтобы загрузить несколько файлов, вам необходимо выбрать их все сразу в сборщике файлов.

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