Multer Er en node.js mellomvare for håndtering multipart/form-data, som primært brukes til opplasting av filer. Den er skrevetpå toppen av ryddegutten for maksimal effektivitet.

Merk: Multer vil ikke behandle noen form som ikke er multipart (multipart/form-data).

Installasjon

npm install --save multer

Bruk

Multer legger til et body objekt og et file eller files objekt til request – objektet. body – objektet inneholder verdiene for tekstfeltene i skjemaet, file eller files – objektet inneholder filene som lastes opp via skjemaet.

Eksempel På Grunnleggende bruk:

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

i tilfelle du trenger å håndtere en tekst-bare flerdelt skjema, kan du bruke metoden .none(), 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

Filinformasjon

hver fil inneholder følgende informasjon:

Nøkkel Beskrivelse
fieldName Feltnavn angitt i skjemaet
originalName Navnet på filen på brukerens datamaskin (undefined hvis ingen filnavn ble levert av klienten)
size Størrelsen på filen i byte
stream Strøm av fil
detectedMimeType den oppdagede mime-typen, eller null hvis vi ikke klarte å oppdage
detectedFileExtension den typiske filtypen for filer av den oppdagede typen, eller tom streng hvis vi ikke klarte å oppdage (med ledende . for å matche path.extname)
clientReportedMimeType mime-typen rapportert av klienten ved hjelp av Content-Type header, eller null1 hvis header var fraværende
clientReportedFileExtension utvidelsen av filen lastet opp (som rapportert av path.extname)

1 Foreløpig returnerer text/plain hvis header er fraværende, er dette en bug, og det vil bli fikset i en patch utgivelse. Ikke stole på denne oppførselen.

multer (opts)

Multer godtar et alternativobjekt, følgende er alternativene som kan overføres Til Multer.

Nøkkel Beskrivelse
limits Grenser for opplastede data (full beskrivelse)

.single(fieldname)

Godta en enkelt fil med navnet fieldname. Den eneste filen vil bli lagret req.file.

.array(fieldname)

Godta en rekke filer, alle med navnet fieldname. Eventuelt feil ut ifmore enn maxCount filer lastes opp. Matrisen av filer vil bli lagret ireq.files.

.fields(fields)

Godta en blanding av filer, spesifisert av fields. Et objekt med arrays av filervil bli lagret i req.files.

fields skal være en rekke objekter med name og eventuelt en maxCount.Eksempel:

.none()

Godta bare tekstfelt. Hvis noen filopplasting er gjort, vil feil med kode»LIMIT_UNEXPECTED_FILE» bli utstedt. Dette er det samme som å gjøre upload.fields().

.any()

Godtar alle filer som kommer over ledningen. En rekke filer vil bli lagret ireq.files.

ADVARSEL: Pass på at du alltid håndterer filene som en bruker laster opp.Aldri legge multer som en global mellomvare siden en ondsinnet bruker kan uploadfiles til en rute som du ikke forutse. Bruk bare denne funksjonen på ruterhvor du håndterer de opplastede filene.

grenser

et objekt som angir størrelsesgrensene for følgende valgfrie egenskaper. Multer passerer dette objektet inn i ryddegutt direkte, og detaljene i egenskapene kan bli funnet på rydegutt side.

følgende grenser er tilgjengelige:

Nøkkel Beskrivelse Standard
fieldNameSize Maks feltnavn størrelse '100B'
fieldSize Maks feltverdi størrelse '8KB'
fields Maks antall ikke-filfelt 1000
fileSize maks filstørrelse '8MB'
files maks antall filfelt 10
headerPairs maks antall header nøkkel=> verdipar å analysere 2000 (samme Som Nodes http)

Bytes grenser kan sendes enten som et tall eller som en streng med et passende prefiks.

Angi grensene kan bidra til å beskytte nettstedet ditt mot tjenestenektangrep(DoS).

Feilhåndtering

når det oppstår en feil, vil multer delegere feilen til express. Du candisplay en fin feil side ved hjelp av standard express måte.

hvis du vil fange feil spesifikt fra multer, kan du ringe tilmiddleware-funksjonen 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 })})

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.