English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Загрузка файлов Node.js– В этом уроке Node.js мы изучим, как загружать файлы с веб-клиента на сервер Node.js. Иными словами, клиент может загружать файлы на сервер Node.js.
Чтобы загрузить файл на сервер Node.js, следуйте следующим пошаговым инструкциям:
В этом примере мы будем использовать модули http, fs и мощный.http:Для серверной активности.Node.js fs:Сохраните загруженные файлы в определенное место на сервере.Мощный:Анализ данных html-формы. Если вышеуказанные модули еще не установлены, вы можете немедленно использовать NPM для их установки. Запустите следующие команды в терминале для установки модулей:
npm install http npm install fs npm install formidable |
Подготовьте HTML-страницу (upload_file.html) с помощью следующей формы, включающей этикетки ввода для загрузки файлов и отправки формы.
<form action="fileupload" method="post" enctype="multipart/form-data"> <input type="file" name="filetoupload"> <input type="submit" value="Upload"> </form>
Создайте HTTP-сервер, который будет слушать порт 8086 (вы можете изменить порт), и предоставьте сервер для двух URL, как показано ниже:
http.createServer(function (req, res) { if (req.url == '/uploadform') { // Если URL запроса содержит “ / uploadform” // Заполните ответ HTML-файлом, содержащим загруженную таблицу else if (req.url == '/fileupload') { // Если URL запроса содержит “ / fileupload” // Используйте мощные модули // Чтение данных формы (включая загруженные файлы) // Сохраните файл в определенное место. } }).listen(8086);
Используя мощные модули, анализируйте элементы форм и сохраняйте файлы в определенное место. После успешной загрузки файла может быть отображено сообщение о том, что загрузка файла успешна. Вначале файл сохраняется в временное место. Мы можем использовать метод fs.rename(), чтобы переместить файл в нужное место с новым путем.
var form = new formidable.IncomingForm(); form.parse(req, function (err, fields, files) { // oldpath:文件保存到的临时文件夹 var oldpath = files.filetoupload.path; var newpath = upload_path + files.filetoupload.name; // 将文件复制到新位置 fs.rename(oldpath, newpath, function (err) { if (err) throw err; // 您可能会用另一个html页面进行响应 res.write('File uploaded and moved!'); res.end(); }); });
Вот полный пример работы с Node.js для загрузки файлов
Этот пример содержит два файла, как показано ниже:
upload_file.html
<!DOCTYPE html> <html> <head> <title>Upload File</title> <style> body{text-align:center;} form{display:block;border:1px solid black;padding:20px;} </style> </head> <body> <h1>Upload files to Node.js Server</h1> <form action="fileupload" method="post" enctype="multipart/form-data"> <input type="file" name="filetoupload"> <input type="submit" value="Upload"> </form> </body> </html
var http = require('http'); var fs = require('fs'); var formidable = require('formidable'); // 包含上传表单的html文件 var upload_html = fs.readFileSync("upload_file.html"); // 将其替换为保存上传文件的位置 var upload_path = "/home/arjun/workspace/nodejs/upload_file/"; http.createServer(function (req, res) { if (req.url == '/uploadform') { res.writeHead(200); res.write(upload_html); return res.end(); else if (req.url == '/fileupload') { var form = new formidable.IncomingForm(); form.parse(req, function (err, fields, files) { // oldpath:文件保存到的临时文件夹 var oldpath = files.filetoupload.path; var newpath = upload_path + files.filetoupload.name; // 将文件复制到新位置 fs.rename(oldpath, newpath, function (err) { if (err) throw err; // 您可能会用另一个html页面进行响应 res.write('File uploaded and moved!'); res.end(); }); }); } }).listen(8086);
在带有节点的终端中运行Node.js脚本文件
arjun@w3codebox:~/workspace/nodejs/upload_file$ node nodejs-upload-file.js
上传的文件保存在node.js文件nodejs-upload-file.js旁边。您可以在node.js脚本文件中更改此位置。
打开Web浏览器(HTTP客户端),然后单击URL http:// localhost:8086/uploadform
点击浏览。
选择一个文件,然后单击“打开”。
当前,文件已上传到表单。单击Node.js的Upload按钮来解析表单元素并保存文件。
检查node.js脚本文件旁边的Node.js服务器。
arjun@w3codebox:~/workspace/nodejs/upload_file$ ls blur1.jpg nodejs-upload-file.js upload_file.html
在本Node.js教程– Node.js将文件上传到服务器中,我们学习了如何使用强大的fs和http模块将文件上传到Node.js服务器。