2016-09-06 116 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!'); 
    }); 
}); 

我得到我想的东西很明显的感觉......

编辑

代码我尝试以下赛义德的帮助:

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

感谢赛义德,但我只是尝试这样做,收到此错误控制台:错误 '[功能:下一页] [{字段名: 'uploadedImages', ORIGINALNAME: 'Me.jpg', 编码: '7位' , mimetype:'image/jpeg', buffer:, size:98305}]' –

+0

您是否只尝试过我的示例或应用您的代码? – Noman

+0

我刚刚添加了我尝试添加到原始文章中的代码。与你的相同或多或少,但它不起作用。 –

0

我的猜测是,你要上传的每个文件,你reclick:

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

如果你这样做,那么只有最后一次选择的文件将会被上传,因为你覆盖以前选定的文件。

要上传多个文件,您必须在文件选取器中一次全选所有文件。

相关问题