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