2015-07-11 2 views
0

Я хочу знать самый простой способ обработки двух отдельных загрузок файлов, один для изображений, а другой для аудио. прямо сейчас я использую multer, и он загружает все многостраничные закачки в одно и то же место. могу ли я указать разные местоположения для обеих загрузок файлов?отдельные загрузки файлов node.js

+0

Проверьте ['.rename()'] (https://www.npmjs.com/package/multer#rename-fieldname-filename-req-res). – robertklep

ответ

0

Предполагая, что вы хотите сохранить файлы на диск, вы можете сделать что-то вроде этого:

var storage = multer.diskStorage({ 
    destination: function(req, file, cb) { 
     if (file.fieldname === 'image-file') { 
      return cb(null, 'folder-for-image-uploads'); 
     } 

     if (file.fieldname === 'audio-file') { 
      return cb(null, 'folder-for-audio-uploads'); 
     } 

     cb(new Error('Unknown fieldname: ' + file.fieldname)); 
    }, 
    filename: function(req, file, cb) { 
     if (file.fieldname === 'image-file') { 
      return cb(null, 'image-filename.jpg'); 
     } 

     if (file.fieldname === 'audio-file') { 
      return cb(null, 'audio-filename.mp3'); 
     } 

     cb(new Error('Unknown fieldname: ' + file.fieldname)); 
    } 
}); 

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

app.post('/endpoint', upload.fields([{name: 'image-file', maxCount: 1}, {name: 'audio-file', maxCount: 1}]), function(req, res) { 
    // handle request, files already saved to disk 
    res.sendStatus(200); 
} 

Для этого на работу, вам нужно имя input HTML элементов, чтобы соответствовать fieldname свойства, например:

<form method="POST" action="/endpoint" enctype="multipart/form-data"> 
    <input type="file" name="image-file"> 
    <input type="file" name="audio-file"> 
    <input type="submit">Submit</input> 
</form> 
Смежные вопросы