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);