Node.js Carica file


Il formidabile modulo

C'è un ottimo modulo per lavorare con i caricamenti di file, chiamato "Formidable".

Il modulo Formidable può essere scaricato e installato utilizzando NPM:

C:\Users\Your Name>npm install formidable

Dopo aver scaricato il modulo Formidable, puoi includerlo in qualsiasi applicazione:

var formidable = require('formidable');

Caricare files

Ora sei pronto per creare una pagina Web in Node.js che consenta all'utente di caricare file sul tuo computer:

Passaggio 1: crea un modulo di caricamento

Crea un file Node.js che scriva un modulo HTML, con un campo di caricamento:

Esempio

Questo codice produrrà un modulo 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);

Passaggio 2: analizza il file caricato

Includere il modulo Formidable per poter analizzare il file caricato una volta raggiunto il server.

Quando il file viene caricato e analizzato, viene inserito in una cartella temporanea sul tuo computer.

Esempio

Il file verrà caricato e posizionato in una cartella temporanea:

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


Passaggio 3: salva il file

Quando un file viene caricato correttamente sul server, viene inserito in una cartella temporanea.

Il percorso di questa directory può essere trovato nell'oggetto "files", passato come terzo argomento nella parse()funzione di callback del metodo.

Per spostare il file nella cartella di tua scelta, usa il modulo File System e rinomina il file:

Esempio

Includere il modulo fs e spostare il file nella cartella corrente:

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