Загрузить файлы Node.js
Грозный модуль
Есть очень хороший модуль для работы с закачкой файлов, называется "Грозный".
Модуль Formidable можно загрузить и установить с помощью NPM:
C:\Users\Your Name>npm install formidable
После того, как вы загрузили модуль Formidable, вы можете включить его в любое приложение:
var formidable = require('formidable');
Загрузить файлы
Теперь вы готовы создать веб-страницу в Node.js, которая позволит пользователю загружать файлы на ваш компьютер:
Шаг 1: Создайте форму загрузки
Создайте файл Node.js, который записывает HTML-форму с полем загрузки:
Пример
Этот код создаст 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);
Шаг 2: Разберите загруженный файл
Включите модуль Formidable, чтобы иметь возможность анализировать загруженный файл, как только он достигнет сервера.
Когда файл загружен и проанализирован, он помещается во временную папку на вашем компьютере.
Пример
Файл будет загружен и помещен во временную папку:
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);
Шаг 3: Сохраните файл
Когда файл успешно загружен на сервер, он помещается во временную папку.
Путь к этому каталогу можно найти в объекте «files», который передается в качестве третьего аргумента в parse()
функцию обратного вызова метода.
Чтобы переместить файл в папку по вашему выбору, используйте модуль файловой системы и переименуйте файл:
Пример
Включите модуль fs и переместите файл в текущую папку:
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);