Загрузка файлов в Node.js
Введение: загрузка файла означает, что пользователь с клиентской машины запрашивает загрузку файла на сервер. Например, пользователи могут загружать изображения, видео и т. Д. В Facebook, Instagram и т. Д.
Особенности модуля Multer: Файл может быть загружен на сервер с помощью модуля Multer. На рынке есть и другие модули, но multer очень популярен, когда дело доходит до загрузки файлов. Multer - это промежуточное программное обеспечение node.js, которое используется для обработки данных multipart / form, которые в основном используются для загрузки файлов.
Примечание: Multer будет обрабатывать только те формы, которые являются составными (multipart / form-data). Поэтому всякий раз, когда вы используете multer, убедитесь, что вы поместили multipart в форму.
Вступление:
- Легко начать и легко использовать.
- Это широко используемый и популярный модуль для загрузки файлов.
- Пользователи могут загружать один или несколько файлов одновременно.
Установка модуля Multer:
- Вы можете посетить ссылку Установить модуль Multer. Вы можете установить этот пакет с помощью этой команды.
npm установить Multer
- После установки multer вы можете проверить свою версию multer в командной строке с помощью команды.
npm версия Multer
- После этого вы можете просто создать папку и добавить файл, например index.js. Чтобы запустить этот файл, вам необходимо выполнить следующую команду.
узел index.js
- Требуемый модуль: вам нужно включить модуль multer в свой файл, используя эти строки.
var multer = require ('multer'); - Таким образом, Multer в основном добавляет объект файла или объект файлов и объект тела к объекту запроса. Объект file / files содержит все файлы, которые загружаются через форму, и все значения текстовых полей формы содержатся в объекте body. Вот как multer связывает данные при отправке формы.
Имя файла: Registration.ejs
<!DOCTYPE html><html><head><title>FILE UPLOAD DEMO</title></head><body><h1>Single File Upload Demo</h1><formaction="/uploadProfilePicture"enctype="multipart/form-data"method="POST"><span>Upload Profile Picture:</span><inputtype="file"name="mypic"required/> <br><inputtype="submit"value="submit"></form></body></html>Имя файла: index.js
const express = require("express")const path = require("path")const multer = require("multer")const app = express()// View Engine Setupapp.set("views",path.join(__dirname,"views"))app.set("view engine","ejs")// var upload = multer({ dest: "Upload_folder_name" })// If you do not want to use diskStorage then uncomment itvarstorage = multer.diskStorage({destination:function(req, file, cb) {// Uploads is the Upload_folder_namecb(null,"uploads")},filename:function(req, file, cb) {cb(null, file.fieldname +"-"+ Date.now()+".jpg")}})// Define the maximum size for uploading// picture ie 1 MB. it is optionalconst maxSize = 1 * 1000 * 1000;varupload = multer({storage: storage,limits: { fileSize: maxSize },fileFilter:function(req, file, cb){// Set the filetypes, it is optionalvarfiletypes = /jpeg|jpg|png/;varmimetype = filetypes.test(file.mimetype);varextname = filetypes.test(path.extname(file.originalname).toLowerCase());if(mimetype && extname) {returncb(null,true);}cb("Error: File upload only supports the "+"following filetypes - "+ filetypes);}// mypic is the name of file attribute}).single("mypic");app.get("/",function(req,res){res.render("Signup");})app.post("/uploadProfilePicture",function(req, res, next) {// Error MiddleWare for multer file upload, so if any// error occurs, the image would not be uploaded!upload(req,res,function(err) {if(err) {// ERROR occured (here it can be occured due// to uploading image of size greater than// 1MB or uploading different file type)res.send(err)}else{// SUCCESS, image successfully uploadedres.send("Success, Image uploaded!")}})})// Take any port number of your choice which// is not taken by any other processapp.listen(8080,function(error) {if(error)throwerrorconsole.log("Server created Successfully on PORT 8080")})Шаги по запуску программы:
- Структура проекта будет выглядеть так:

Здесь «uploads» - это папка, в которую будут загружены наши файлы, на данный момент она пуста. «Singup.ejs» хранится в папке просмотров. - Убедитесь, что у вас есть «движок просмотра», как я использовал «ejs», а также установите экспресс и multer, используя следующие команды:
npm установить ejs
npm установить экспресс
npm установить Multer
- Запустите файл index.js, используя команду ниже:
узел index.js

- Откройте браузер и введите этот URL:
http: // локальный: 8080 /
- Затем вы увидите форму регистрации, как показано ниже:

- Затем выберите файл для загрузки и нажмите кнопку «Отправить».
В случае возникновения ошибки отобразится следующее сообщение:
И если ошибок не возникнет, то отобразится следующее сообщение:
- Если процесс загрузки файла прошел успешно, вы можете перейти в папку загрузок и увидеть загруженное изображение, как показано ниже:

Вот как вы можете загрузить файл в Node.js с помощью модуля multer. На рынке есть и другие модули для загрузки файлов, такие как fileupload, express-fileupload и т. Д.
- Структура проекта будет выглядеть так: