Nahrání souborů Node.js


Impozantní modul

Existuje velmi dobrý modul pro práci s nahráváním souborů, nazvaný „Formidable“.

Modul Formidable lze stáhnout a nainstalovat pomocí NPM:

C:\Users\Your Name>npm install formidable

Po stažení modulu Formidable můžete modul zahrnout do libovolné aplikace:

var formidable = require('formidable');

Nahrát soubory

Nyní jste připraveni vytvořit webovou stránku v Node.js, která uživateli umožní nahrávat soubory do vašeho počítače:

Krok 1: Vytvořte formulář pro nahrání

Vytvořte soubor Node.js, který zapíše formulář HTML s polem pro nahrávání:

Příklad

Tento kód vytvoří HTML formulář:

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

Krok 2: Analyzujte nahraný soubor

Zahrňte modul Formidable, abyste mohli analyzovat nahraný soubor, jakmile se dostane na server.

Když je soubor nahrán a analyzován, bude umístěn do dočasné složky ve vašem počítači.

Příklad

Soubor bude nahrán a umístěn do dočasné složky:

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


Krok 3: Uložte soubor

Když je soubor úspěšně nahrán na server, je umístěn do dočasné složky.

Cestu k tomuto adresáři lze nalézt v objektu "files", předávaném jako třetí argument ve parse()funkci zpětného volání metody.

Chcete-li soubor přesunout do složky podle vašeho výběru, použijte modul Systém souborů a přejmenujte soubor:

Příklad

Zahrňte modul fs a přesuňte soubor do aktuální složky:

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