2014-04-12 11 views
7

Da express.multipart aus der Express 4.x-Bibliothek entfernt wird, wie wird der Datei-Upload in expressjs am besten gehandhabt?Multipart-/Formulardaten-Upload - Nodejs - expressjs

+2

Alternativen sind in der Connect-Dokumentation aufgeführt: https://github.com/senchalabs/connect#middleware –

+0

@ JonathanLonowski ja, aber diese Bibliotheken sieht nicht so sauber wie die alte, welche bevorzugen Sie? – nilveryboring

+0

Technisch kamen viele von denen aus dem alten. connect-multiparty ist mehr oder weniger die, die du brauchst. –

Antwort

5

beantwortet gerade eine similar question über multipart. Ich würde Multiparty empfehlen:

Haben Sie node-multiparty einen Versuch gegeben? Hier ist Beispiel für die Verwendung von der Readme:

var multiparty = require('multiparty') 
    , http = require('http') 
    , util = require('util') 

http.createServer(function(req, res) { 
    if (req.url === '/upload' && req.method === 'POST') { 
    // parse a file upload 
    var form = new multiparty.Form(); 

    form.parse(req, function(err, fields, files) { 
     res.writeHead(200, {'content-type': 'text/plain'}); 
     res.write('received upload:\n\n'); 
     res.end(util.inspect({fields: fields, files: files})); 
    }); 

    return; 
    } 

    // show a file upload form 
    res.writeHead(200, {'content-type': 'text/html'}); 
    res.end(
    '<form action="/upload" enctype="multipart/form-data" method="post">'+ 
    '<input type="text" name="title"><br>'+ 
    '<input type="file" name="upload" multiple="multiple"><br>'+ 
    '<input type="submit" value="Upload">'+ 
    '</form>' 
); 
}).listen(8080); 

Der Autor (Andrew Kelley) recommends vermeiden bodyParser, so haben Sie Recht, es zu vermeiden, aber Mehr scheint für mich ein ähnliches Problem zu lösen.

+1

gibt es eine Möglichkeit, dies als Middleware zu verwenden? Ich möchte das nicht überall mit einschließen – nilveryboring

+0

@nilveryboring Ich bin mir nicht sicher, was du meinst ... Du könntest das definitiv irgendwo hinstellen, das wiederverwendet werden könnte ... Ich weiß nicht, warum du das überall brauchen würdest .... – kentcdodds

+0

Ok .. Ich habe das auch ausprobiert. Wie bekomme ich die Datei ohne den Antwort-Header zu setzen ?? Ich möchte einen anderen Prozess machen, wenn ok. Setze den Antwort-Header oder setze den Fehler zurück. res.end (util.inspect ({fields: fields, files: files})); ..Ich möchte nur die Datei gesendet aber den Header allein lassen ??? – philipfwilson

Verwandte Themen