Multer er en node.js mellemvare til håndtering multipart/form-data, som primært bruges til upload af filer. Det er skrevetpå toppen af busboy for maksimal effektivitet.

Bemærk: Multer behandler ikke nogen form, der ikke er multipart (multipart/form-data).

Installation

npm install --save multer

brug

Multer tilføjer et body objekt og et file eller files objekt til request objektet. Objektet body indeholder værdierne for formularens tekstfelter, objektet file eller files indeholder de filer, der uploades via formularen.

grundlæggende brugseksempel:

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})

hvis du har brug for at håndtere en tekst-kun multipart formular, kan du bruge .none() metode, eksempel:

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

filoplysninger

hver fil indeholder følgende oplysninger:

nøgle beskrivelse
fieldName Feltnavn angivet i formularen
originalName navn på filen på brugerens computer (undefined hvis der ikke blev leveret noget filnavn af klienten)
size størrelsen af filen i bytes
stream strøm af fil
detectedMimeType den detekterede mime-type eller null, hvis vi ikke kunne registrere
detectedFileExtension den typiske filtypenavn for filer af den detekterede type eller tomme streng, hvis vi ikke kunne registrere (med førende . for at matche path.extname)
clientReportedMimeType mime-typen rapporteret af klienten ved hjælp af Content-Type – overskriften eller null1, hvis overskriften var fraværende
clientReportedFileExtension udvidelsen af den uploadede fil (som rapporteret af path.extname)

1 returnerer i øjeblikket text/plain hvis header er fraværende, er dette en fejl, og den vil blive rettet i en patch-udgivelse. Stol ikke på denne adfærd.

multer(opts)

Multer accepterer et indstillingsobjekt, følgende er de muligheder, der kan værepasseret til Multer.

nøgle beskrivelse
limits grænser for de uploadede data (fuld beskrivelse)

.single(fieldname)

Accepter en enkelt fil med navnet fieldname. Den enkelte fil gemmes i req.file.

.array(fieldname)

Accepter en række filer, alle med navnet fieldname. Eventuelt fejl ud hvismere end maxCount filer uploades. Arrayet af filer gemmes ireq.files.

.fields(fields)

Accepter en blanding af filer, angivet af fields. Et objekt med arrays af filervil blive gemt i req.files.

fields skal være en række objekter med nameog eventuelt en maxCount.Eksempel:

.none()

accepter kun tekstfelter. Hvis nogen fil upload er lavet, fejl med koden” LIMIT_UVENTET_FILE ” vil blive udstedt. Dette er det samme som at gøre upload.fields().

.any()

accepterer alle filer, der kommer over ledningen. En række filer gemmes ireq.files.

advarsel: Sørg for, at du altid håndterer de filer, som en bruger uploader.Tilføj aldrig multer som en global mellemvare, da en ondsindet bruger kunne uploade filer til en rute, som du ikke forventede. Brug kun denne funktion på ruterhvor du håndterer de uploadede filer.

grænser

et objekt, der angiver størrelsesgrænserne for følgende valgfrie egenskaber. Multer sender dette objekt direkte ind i busboy, og detaljerne i egenskaberne kan findes på busboy ‘ s side.

følgende grænser er tilgængelige:

nøgle beskrivelse standard
fieldNameSize maks feltnavn størrelse '100B'
fieldSize maks feltværdi størrelse '8KB'
fields maks. antal ikke-filfelter 1000
fileSize den maksimale filstørrelse '8MB'
files det maksimale antal filfelter 10
headerPairs det maksimale antal header nøgle=> værdipar til parse 2000 (samme som nodens http)

Bytes-grænser kan overføres enten som et tal eller som en streng med et passende præfiks.

angivelse af grænserne kan hjælpe med at beskytte din hjemmeside mod DoS-angreb (denial of Service).

fejlhåndtering

når der opstår en fejl, delegerer multer fejlen til at udtrykke. Du kanVis en dejlig fejlside ved hjælp af standard Ekspres måde.

hvis du vil fange fejl specifikt fra multer, kan du ringemiddelsvarefunktion selv.

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 })})

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.