Node.js -Upload-Dateien
Das gewaltige Modul
Es gibt ein sehr gutes Modul für die Arbeit mit Datei-Uploads namens "Formidable".
Das Formidable-Modul kann mit NPM heruntergeladen und installiert werden:
C:\Users\Your Name>npm install formidable
Nachdem Sie das Formidable-Modul heruntergeladen haben, können Sie das Modul in jede Anwendung einbinden:
var formidable = require('formidable');
Daten hochladen
Jetzt können Sie eine Webseite in Node.js erstellen, mit der der Benutzer Dateien auf Ihren Computer hochladen kann:
Schritt 1: Erstellen Sie ein Upload-Formular
Erstellen Sie eine Node.js-Datei, die ein HTML-Formular mit einem Upload-Feld schreibt:
Beispiel
Dieser Code erzeugt ein HTML-Formular:
var http = require('http');
http.createServer(function
(req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('<form
action="fileupload" method="post" enctype="multipart/form-data">');
res.write('<input
type="file" name="filetoupload"><br>');
res.write('<input
type="submit">');
res.write('</form>');
return res.end();
}).listen(8080);
Schritt 2: Analysieren Sie die hochgeladene Datei
Schließen Sie das Formidable-Modul ein, um die hochgeladene Datei analysieren zu können, sobald sie den Server erreicht.
Wenn die Datei hochgeladen und analysiert wird, wird sie in einem temporären Ordner auf Ihrem Computer abgelegt.
Beispiel
Die Datei wird hochgeladen und in einem temporären Ordner abgelegt:
var http = require('http');
var formidable = require('formidable');
http.createServer(function
(req, res) {
if (req.url == '/fileupload') {
var form = new formidable.IncomingForm();
form.parse(req,
function (err, fields, files) {
res.write('File
uploaded');
res.end();
});
} else {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('<form
action="fileupload" method="post" enctype="multipart/form-data">');
res.write('<input
type="file" name="filetoupload"><br>');
res.write('<input
type="submit">');
res.write('</form>');
return res.end();
}
}).listen(8080);
Schritt 3: Speichern Sie die Datei
Wenn eine Datei erfolgreich auf den Server hochgeladen wurde, wird sie in einem temporären Ordner abgelegt.
Der Pfad zu diesem Verzeichnis ist im "files"-Objekt zu finden, das als drittes Argument in der parse()
Callback-Funktion der Methode übergeben wird.
Um die Datei in den Ordner Ihrer Wahl zu verschieben, verwenden Sie das Dateisystemmodul und benennen Sie die Datei um:
Beispiel
Binden Sie das fs-Modul ein und verschieben Sie die Datei in den aktuellen Ordner:
var http = require('http');
var formidable = require('formidable');
var fs = require('fs');
http.createServer(function
(req, res) {
if (req.url == '/fileupload') {
var form = new formidable.IncomingForm();
form.parse(req,
function (err, fields, files) {
var
oldpath = files.filetoupload.filepath;
var
newpath = 'C:/Users/Your Name/' + files.filetoupload.originalFilename;
fs.rename(oldpath, newpath, function (err) {
if (err) throw
err;
res.write('File uploaded
and moved!');
res.end();
});
});
} else {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('<form
action="fileupload" method="post" enctype="multipart/form-data">');
res.write('<input
type="file" name="filetoupload"><br>');
res.write('<input
type="submit">');
res.write('</form>');
return res.end();
}
}).listen(8080);