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