2016-08-09 103 views
0

In Bezug auf Lernen muss ich von mir eine Datei-Upload machen mit fs.streamsKnoten + Express Rohr-Datei direkt auf Writestream

router.post('/upload', (req, res, next) => { 
    req.pipe(fs.createWritableStream('files/file.png')) 
    .on('error', (err) => next(err)) 
    .on('close',() => { 
     res.json({image: 'files/file.png'}); 
    }) 
}) 

Dies ist dosen't Arbeit. Also zwei Fragen

  • Wie man Dateinamen und Daten von req bekommen?
  • Wie verbinde ich diese beiden Streams?

Update: In allen Tutorials entgegengesetzte Wirkung beschrieben - lesen Datei von fs und pipe es res zu Enduser.

+0

haben Sie eine Lösung für dieses Problem zu finden? – yeiniel

Antwort

0

können Sie multer

const multer = require('multer'); 
const upload = multer({ 
    dest: 'folderName' 
}); 

router.post('/upload', upload.single('formField'), (req, res, next) => { 
    res.json({image: req.file.path}); 
}) 

in diesem Codedateipfad gesendet werden verwenden. wenn Sie Datei selbst senden wollen, dann sollten Sie schreiben:

res.download(req.file.path); 

statt res.json({image: req.file.path}).

Ich weiß nicht, wie res.download genau funktioniert. vielleicht braucht es den ganzen Puffer der Datei und sendet es.

Dokumentation des multer ist here