Multer on solmu.JS middleware multipart/form-data käsittelyyn, jota käytetään ensisijaisesti tiedostojen lataamiseen. Se on kirjoitettu päälle busboy maksimaalisen tehokkuuden.

huomautus: Multer ei käsittele mitään muotoa, joka ei ole multipart (multipart/form-data).

installaatio

npm install --save multer

käyttö

Multer lisää body kohteen ja file tai files kohteen request kohteen. body objekti sisältää lomakkeen tekstikenttien arvot, file tai files objekti sisältää lomakkeen kautta ladatut tiedostot.

Peruskäyttöesimerkki:

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

jos joudut käsittelemään vain tekstimuotoista kerrannaislomaketta, voit käyttää .none() – menetelmää, esim.:

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

tiedostotiedot

jokainen tiedosto sisältää seuraavat tiedot:

avain kuvaus
fieldName lomakkeessa määritelty Kentän nimi
originalName tiedoston nimi käyttäjän tietokoneella (undefined jos asiakas ei toimittanut tiedostonimeä)
size Tiedoston koko tavuina
stream tiedostovirta
detectedMimeType havaittu mime-tyyppi, tai nolla, jos emme havaitse
detectedFileExtension tyypillinen tiedostopääte tiedostoille havaitun tyypin tai tyhjän merkkijonon, jos emme havaitse (johtavalla . täsmää path.extname)
clientReportedMimeType mime-tyyppi, jonka asiakas ilmoittaa käyttäen Content-Type otsikkoa, tai null1, jos otsikkoa ei ollut
clientReportedFileExtension laajennuksen tiedoston ladattu (kuten raportoitu path.extname)

1 tällä hetkellä palauttaa text/plain jos otsikkoa ei ole, tämä on vika ja se korjataan korjaustiedotteessa. Älä luota tähän käyttäytymiseen.

multer (opts)

Multer hyväksyy optio-objektin, seuraavat vaihtoehdot voidaan asettaa Multerille.

avain kuvaus
limits ladattujen tietojen rajat (täydellinen kuvaus)

.single(fieldname)

hyväksy yksittäinen tiedosto, jonka nimi on fieldname. Yksittäinen tiedosto on storedin req.file.

.array(fieldname)

hyväksy joukko tiedostoja, joiden kaikkien nimi on fieldname. Valinnaisesti virhe pois, jos enemmän kuin maxCount tiedostoja ladataan. Joukko tiedostoja tallennetaan req.files.

.fields(fields)

hyväksy fieldsmäärittelemä tiedostojen yhdistelmä. Objekti, jossa on taulukoita tiedostoista, tallennetaan req.files.

fields tulisi olla joukko kohteita, joilla on name ja valinnaisesti maxCount.Esimerkki:

.none()

hyväksy vain tekstikenttiä. Jos tiedosto ladataan, virhe koodilla ”LIMIT_UNEXPECTED_FILE” annetaan. Tämä on sama kuin upload.fields().

.any()

hyväksyy kaikki tiedostot, jotka tulevat langan yli. Joukko tiedostoja tallennetaan req.files.

varoitus: Varmista, että käsittelet aina käyttäjän lataamia tiedostoja.Älä koskaan lisää multeria maailmanlaajuisena väliohjelmana, koska haitallinen käyttäjä voi ladata tiedostoja reitille, jota et ennakoinut. Käytä tätä toimintoa vain reiteillä, joilla käsittelet ladattuja tiedostoja.

rajat

objekti, joka määrittelee seuraavien valinnaisten ominaisuuksien kokorajoitukset. Multer siirtää tämän kohteen suoraan busboyhin, ja ominaisuuksien yksityiskohdat löytyvät busboyn sivulta.

seuraavat raja-arvot ovat käytössä:

avain kuvaus oletusarvo
fieldNameSize kentän Enimmäisnimen koko '100B'
fieldSize kentän enimmäisarvo '8KB'
fields tiedostottomien kenttien enimmäismäärä 1000
fileSize tiedoston enimmäiskoko '8MB'
files tiedostokenttien enimmäismäärä 10
headerPairs otsakkeen enimmäismäärä avain = >arvoparit jäsennykseen 2000 (sama kuin solmun http)

Tavurajat voidaan siirtää joko numerona tai merkkijonona, jolla on sopiva etuliite.

rajojen määrittäminen voi auttaa suojaamaan sivustoasi palvelunestohyökkäyksiltä (denial of service, dos).

virheenkäsittely

kohdatessaan virheen multer siirtää virheen ilmaisuun. Voit soittaa mukava virhe sivun käyttämällä standard express tavalla.

jos haluat napata virheet nimenomaan multerilta, voit kutsua niitä tiedostotoiminnoksi itse.

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

Vastaa

Sähköpostiosoitettasi ei julkaista.