Prześlij pliki Node.js


Niesamowity moduł

Istnieje bardzo dobry moduł do pracy z przesyłaniem plików o nazwie „Formidable”.

Moduł Formidable można pobrać i zainstalować za pomocą NPM:

C:\Users\Your Name>npm install formidable

Po pobraniu modułu Formidable możesz dołączyć go do dowolnej aplikacji:

var formidable = require('formidable');

Prześlij pliki

Teraz jesteś gotowy do stworzenia strony internetowej w Node.js, która pozwoli użytkownikowi przesyłać pliki na Twój komputer:

Krok 1: Utwórz formularz przesyłania

Utwórz plik Node.js, który zapisuje formularz HTML z polem przesyłania:

Przykład

Ten kod wygeneruje formularz HTML:

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: Przeanalizuj przesłany plik

Dołącz moduł Formidable, aby móc przeanalizować przesłany plik, gdy dotrze on do serwera.

Po przesłaniu i przeanalizowaniu pliku zostaje on umieszczony w folderze tymczasowym na komputerze.

Przykład

Plik zostanie przesłany i umieszczony w folderze tymczasowym:

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: Zapisz plik

Po pomyślnym przesłaniu pliku na serwer umieszczany jest w folderze tymczasowym.

Ścieżkę do tego katalogu można znaleźć w obiekcie „files”, przekazanym jako trzeci argument w parse()funkcji zwrotnej metody.

Aby przenieść plik do wybranego folderu, użyj modułu System plików i zmień nazwę pliku:

Przykład

Dołącz moduł fs i przenieś plik do bieżącego folderu:

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