Multer egy csomópont.js köztes szoftver multipart/form-data kezelésére, amelyet elsősorban fájlok feltöltésére használnak. A busboy tetején van írva a maximális hatékonyság érdekében.

megjegyzés: a Multer nem dolgoz fel olyan formát, amely nem többrészes (multipart/form-data).

telepítés

npm install --save multer

használat

Multer hozzáad egy body objektumot és egy file vagy files objektumot a request objektumhoz. A body objektum az űrlap szövegmezőinek értékeit tartalmazza, a file vagy files objektum az űrlapon keresztül feltöltött fájlokat tartalmazza.

alapvető használati példa:

const multer = require('multer')const express = require('express')const app = express()const upload = multer()app.post('/profile', upload.single('avatar'), (req, res, next) => { // req.file is the `avatar` file // req.body will hold the text fields, if there were any})app.post('/photos/upload', upload.array('photos', 12), (req, res, next) => { // req.files is array of `photos` files // req.body will contain the text fields, if there were any})const cpUpload = upload.fields()app.post('/cool-profile', cpUpload, (req, res, next) => { // req.files is an object (String -> Array) where fieldname is the key, and the value is array of files // // e.g. // req.files -> File // req.files -> Array // // req.body will contain the text fields, if there were any})

abban az esetben, ha csak szöveges többrészes űrlapot kell kezelnie, használhatja a .none() módszert, példa:

const multer = require('multer')const express = require('express')const app = express()const upload = multer()app.post('/profile', upload.none(), (req, res, next) => { // req.body contains the text fields})

API

Fájlinformációk

minden fájl a következő információkat tartalmazza:

kulcs leírás
fieldName az űrlapon megadott mező neve
originalName a felhasználó számítógépén található fájl neve (undefined, ha az ügyfél nem adott meg fájlnevet)
size a fájl mérete bájtban
stream Fájlfolyam
detectedMimeType az észlelt mime-típus, vagy null, ha nem sikerült észlelni
detectedFileExtension a fájlok tipikus fájlkiterjesztése az észlelt típus, vagy üres karakterlánc, ha nem sikerült felismerni (a vezető ., hogy megfeleljen path.extname)
clientReportedMimeType az ügyfél által a Content-Type fejléc használatával jelentett mime-típus, vagy null1, ha a fejléc hiányzott
clientReportedFileExtension a fájl kiterjesztése feltöltött (amint azt a path.extname)

1 jelenleg text/plain értéket ad vissza, ha a fejléc hiányzik, ez egy hiba, és javításra kerül egy patch kiadásban. Ne támaszkodjon erre a viselkedésre.

multer(opts)

a Multer Elfogad egy opcióobjektumot, a következő lehetőségek adhatók át a Multernek.

kulcs leírás
limits a feltöltött adatok korlátai (teljes leírás)

.single(fieldname)

fogadjon el egy fieldname nevű fájlt. Az egyetlen fájl tárolódin req.file.

.array(fieldname)

fogadjon el egy sor fájlt, mindegyik fieldname névvel. Opcionálisan hiba ki, hatöbb mint maxCount fájlok vannak feltöltve. A fájlok tömbjereq.files – ben lesz tárolva.

.fields(fields)

fogadja el a fields által megadott fájlok keverékét. Egy objektum fájl tömbökkel req.files lesz tárolva.

fields objektumok tömbjének kell lennie nameés opcionálisan maxCount értékkel.Példa:

.none()

csak szöveges mezőket fogadjon el. Ha bármilyen fájl feltöltésre kerül, a”LIMIT_UNEXPECTED_FILE” kód hibája kerül kiadásra. Ez ugyanaz, mint a upload.fields().

.any()

elfogadja az összes fájlt, hogy jön át a vezetéket. A fájlok tömbjereq.files – ben lesz tárolva.

figyelmeztetés: Ügyeljen arra, hogy mindig kezelje a felhasználó által feltöltött fájlokat.Soha ne adjon hozzá multert globális köztes szoftverként, mivel egy rosszindulatú felhasználó feltölthetfájlokat egy olyan útvonalra, amelyre nem számított. Ezt a funkciót csak azokon az útvonalakon használja, ahol a feltöltött fájlokat kezeli.

limits

egy objektum, amely meghatározza a következő opcionális tulajdonságok méretkorlátjait. Multer közvetlenül átadja ezt az objektumot a busboy-nak, a tulajdonságok részletei pedig a busboy oldalán találhatók.

a következő határértékek állnak rendelkezésre:

kulcs leírás alapértelmezett
fieldNameSize a mezőnév maximális mérete '100B'
fieldSize Max mező érték mérete '8KB'
fields a nem fájlmezők maximális száma 1000
fileSize a maximális fájlméret '8MB'
files a fájlmezők maximális száma 10
headerPairs a fejléc maximális száma key=> elemzendő értékpárok 2000 (ugyanaz, mint a Node http)

a Bájtkorlátokat számként vagy megfelelő előtaggal ellátott karakterláncként lehet átadni.

a korlátozások megadása segíthet megvédeni webhelyét a szolgáltatásmegtagadási (dos) támadásokkal szemben.

hibakezelés

hiba észlelésekor a multer a hibát kifejezésre ruházza át. Egy szép hibaoldalt jeleníthet meg a szokásos expressz módon.

ha azt szeretnénk, hogy utolérjék a hibákat kifejezetten a multer, akkor hívja themiddleware funkció egyedül.

const upload = multer().single('avatar')app.post('/profile', (req, res) => { upload(req, res, (err) => { if (err) { // An error occurred when uploading return } // Everything went fine })})

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.