English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

NodeJS базовый учебник

NodeJS Express.js

NodeJS буфер & URL;

NodeJS MySql

NodeJS MongoDB

NodeJS файл (FS)

Другое NodeJS

Загрузка файлов в Node.js

Node.js загружает файлы на сервер

Загрузка файлов Node.js– В этом уроке Node.js мы изучим, как загружать файлы с веб-клиента на сервер Node.js. Иными словами, клиент может загружать файлы на сервер Node.js.

Чтобы загрузить файл на сервер Node.js, следуйте следующим пошаговым инструкциям:

  1. Необходимые модули

    В этом примере мы будем использовать модули http, fs и мощный.http:Для серверной активности.Node.js fs:Сохраните загруженные файлы в определенное место на сервере.Мощный:Анализ данных html-формы. Если вышеуказанные модули еще не установлены, вы можете немедленно использовать NPM для их установки. Запустите следующие команды в терминале для установки модулей:

    npm install http npm install fs npm install formidable
  2. Подготовка HTML-формы

    Подготовьте HTML-страницу (upload_file.html) с помощью следующей формы, включающей этикетки ввода для загрузки файлов и отправки формы.

    <form action="fileupload" method="post" enctype="multipart/form-data">
        <input type="file" name="filetoupload">
        <input type="submit" value="Upload">
    </form>
  3. Создание HTTP-сервера

    Создайте HTTP-сервер, который будет слушать порт 8086 (вы можете изменить порт), и предоставьте сервер для двух URL, как показано ниже:

    http.createServer(function (req, res) { 
        if (req.url == '/uploadform') { 
            // Если URL запроса содержит “ / uploadform”
            // Заполните ответ HTML-файлом, содержащим загруженную таблицу
        else if (req.url == '/fileupload') { 
            // Если URL запроса содержит “ / fileupload”
            // Используйте мощные модули
            // Чтение данных формы (включая загруженные файлы)
            // Сохраните файл в определенное место.
        }  
     }).listen(8086);
  4. Сохранение файла

    Используя мощные модули, анализируйте элементы форм и сохраняйте файлы в определенное место. После успешной загрузки файла может быть отображено сообщение о том, что загрузка файла успешна. Вначале файл сохраняется в временное место. Мы можем использовать метод 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

Вот полный пример работы с 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服务器。