Multer is een knooppunt.js middleware voor het verwerken van multipart/form-data, die voornamelijk wordt gebruikt voor het uploaden van bestanden. Het is geschreven op de top van de hulpkelner voor maximale efficiëntie.

opmerking: Multer zal geen enkel formulier verwerken dat niet meerdelig is (multipart/form-data).

installatie

npm install --save multer

gebruik

Multer voegt een body object en een file of files object toe aan het request object. Het body object bevat de waarden van de tekstvelden van het formulier, het file of files object bevat de bestanden die via het formulier zijn geüpload.

Basisgebruiksvoorbeeld:

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

In het geval dat u een tekst-only multipart formulier moet verwerken, kunt u de .none() methode gebruiken, voorbeeld:

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

bestandsinformatie

elk bestand bevat de volgende informatie:

Toets Beschrijving
fieldName naam van het Veld dat is opgegeven in het formulier
originalName Naam van het bestand op de computer van de gebruiker (undefined als er geen bestandsnaam is geleverd door de opdrachtgever)
size Grootte van het bestand in bytes
stream Stream of file
detectedMimeType De gedetecteerde mime-type, of null als we niet op te sporen
detectedFileExtension De typische file-extensie voor bestanden van het gedetecteerde type, of de lege tekenreeks als we niet op te sporen (met toonaangevende . te passen path.extname)
clientReportedMimeType Het mime-type gerapporteerd door de cliënt met behulp van de Content-Type koptekst of null1 als de kop afwezig was
clientReportedFileExtension De extensie van het bestand geüpload (zoals gerapporteerd door path.extname)

1 Momenteel geeft text/plain als de kop afwezig is, is dit een bug is en zal worden vastgesteld in een patch release. Vertrouw niet op dit gedrag.

multer (opts)

Multer accepteert een options-object, de volgende opties kunnen worden toegewezen aan Multer.

sleutel beschrijving
limits limieten van de geüploade gegevens (volledige beschrijving)

.single(fieldname)

accepteer een enkel bestand met de naam fieldname. Het enige bestand wordt opgeslagen in req.file.

.array(fieldname)

accepteer een array van bestanden, allemaal met de naam fieldname. Optioneel is er een fout opgetreden als er meer dan maxCount bestanden worden geüpload. De reeks bestanden zal worden opgeslagen inreq.files.

.fields(fields)

accepteer een mix van bestanden, opgegeven door fields. Een object met arrays van bestanden zal worden opgeslagen in req.files.

fields moet een array van objecten zijn met name en optioneel een maxCount.Voorbeeld:

.none()

accepteer alleen tekstvelden. Als er een bestand upload wordt gemaakt, zal er een fout met code”LIMIT_UN EXPECTED_FILE” worden uitgegeven. Dit is hetzelfde als upload.fields().

.any()

accepteert alle bestanden die over de draad komen. Een reeks bestanden zal worden opgeslagen inreq.files.

waarschuwing: Zorg ervoor dat u altijd omgaan met de bestanden die een gebruiker uploadt.Voeg nooit multer toe als een wereldwijde middleware, omdat een kwaadaardige gebruiker bestanden kon uploaden naar een route die u niet had verwacht. Gebruik deze functie alleen op routeswaar u de geüploade bestanden verwerkt.

limieten

een object dat de groottelimieten van de volgende optionele eigenschappen specificeert. Multer geeft dit object direct door aan busboy, en de details van de eigenschappen zijn te vinden op busboy ‘ s pagina.

de volgende limieten zijn beschikbaar:

Toets Beschrijving Standaard
fieldNameSize Max veld naam van de grootte '100B'
fieldSize Max veld waarde grootte '8KB'
fields Max aantal non-bestand velden 1000
fileSize De maximale bestandsgrootte '8MB'
files Het maximale aantal bestand velden 10
headerPairs Het max aantal kop key = >waardeparen om te ontleden 2000 (hetzelfde als http van Node)

Byte limieten kunnen worden doorgegeven als een getal, of als een string met een geschikt voorvoegsel.

het specificeren van de limieten kan helpen uw site te beschermen tegen denial of service (DoS) aanvallen.

foutafhandeling

wanneer er een fout optreedt, zal multer de fout delegeren aan express. U candisplay een mooie fout pagina met behulp van de standaard express manier.

Als u specifiek fouten van multer wilt vangen, kunt u de middleware-functie zelf aanroepen.

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

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.