🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

multer

Package Overview
Dependencies
Maintainers
5
Versions
55
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

multer - npm Package Compare versions

Comparing version
2.0.2
to
2.1.0
+3
-0
index.js

@@ -22,2 +22,3 @@ var makeMiddleware = require('./lib/make-middleware')

this.preservePath = options.preservePath
this.defParamCharset = options.defParamCharset || 'latin1'
this.fileFilter = options.fileFilter || allowAll

@@ -51,2 +52,3 @@ }

preservePath: this.preservePath,
defParamCharset: this.defParamCharset,
storage: this.storage,

@@ -82,2 +84,3 @@ fileFilter: wrappedFileFilter,

preservePath: this.preservePath,
defParamCharset: this.defParamCharset,
storage: this.storage,

@@ -84,0 +87,0 @@ fileFilter: this.fileFilter,

+1
-3

@@ -1,3 +0,1 @@

var objectAssign = require('object-assign')
function arrayRemove (arr, item) {

@@ -64,5 +62,5 @@ var idx = arr.indexOf(item)

delete placeholder.fieldname
objectAssign(placeholder, file)
Object.assign(placeholder, file)
}
module.exports = FileAppender
var is = require('type-is')
var Busboy = require('busboy')
var extend = require('xtend')
var appendField = require('append-field')

@@ -28,18 +27,8 @@

var preservePath = options.preservePath
var defParamCharset = options.defParamCharset
req.body = Object.create(null)
req.on('error', function (err) {
abortWithError(err)
})
var busboy
try {
busboy = Busboy({ headers: req.headers, limits: limits, preservePath: preservePath })
} catch (err) {
return next(err)
}
var appender = new FileAppender(fileStrategy, req)
var appender = null
var isDone = false

@@ -54,8 +43,10 @@ var readFinished = false

isDone = true
req.unpipe(busboy)
if (busboy) {
req.unpipe(busboy)
setImmediate(() => {
busboy.removeAllListeners()
})
}
drainStream(req)
req.resume()
setImmediate(() => {
busboy.removeAllListeners()
})
next(err)

@@ -90,2 +81,34 @@ }

function handleRequestFailure (err) {
if (isDone) return
if (busboy) busboy.destroy(err)
abortWithError(err)
}
req.on('error', function (err) {
handleRequestFailure(err || new Error('Request error'))
})
req.on('aborted', function () {
handleRequestFailure(new Error('Request aborted'))
})
req.on('close', function () {
if (req.readableEnded) return
handleRequestFailure(new Error('Request closed'))
})
try {
busboy = Busboy({
headers: req.headers,
limits: limits,
preservePath: preservePath,
defParamCharset: defParamCharset
})
} catch (err) {
return next(err)
}
appender = new FileAppender(fileStrategy, req)
// handle text field data

@@ -136,2 +159,7 @@ busboy.on('field', function (fieldname, value, { nameTruncated, valueTruncated }) {

fileFilter(req, file, function (err, includeFile) {
if (errorOccured) {
appender.removePlaceholder(placeholder)
return fileStream.resume()
}
if (err) {

@@ -165,3 +193,3 @@ appender.removePlaceholder(placeholder)

appender.removePlaceholder(placeholder)
uploadedFiles.push(extend(file, info))
uploadedFiles.push({ ...file, ...info })
return pendingWrites.decrement()

@@ -176,3 +204,3 @@ }

var fileInfo = extend(file, info)
var fileInfo = { ...file, ...info }

@@ -179,0 +207,0 @@ appender.replacePlaceholder(placeholder, fileInfo)

{
"name": "multer",
"description": "Middleware for handling `multipart/form-data`.",
"version": "2.0.2",
"version": "2.1.0",
"contributors": [

@@ -12,2 +12,6 @@ "Hage Yaapa <captain@hacksparrow.com> (http://www.hacksparrow.com)",

"repository": "expressjs/multer",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/express"
},
"keywords": [

@@ -26,6 +30,3 @@ "form",

"concat-stream": "^2.0.0",
"mkdirp": "^0.5.6",
"object-assign": "^4.1.1",
"type-is": "^1.6.18",
"xtend": "^4.0.2"
"type-is": "^1.6.18"
},

@@ -32,0 +33,0 @@ "devDependencies": {

@@ -23,3 +23,5 @@ # Multer [![NPM Version][npm-version-image]][npm-url] [![NPM Downloads][npm-downloads-image]][npm-url] [![Build Status][ci-image]][ci-url] [![Test Coverage][test-image]][test-url] [![OpenSSF Scorecard Badge][ossf-scorecard-badge]][ossf-scorecard-visualizer]

| [Việt Nam](https://github.com/expressjs/multer/blob/main/doc/README-vi.md) | Vietnamese |
| [Türkçe](https://github.com/expressjs/multer/blob/main/doc/README-tr.md) | Turkish |
## Installation

@@ -148,2 +150,3 @@

`preservePath` | Keep the full path of files instead of just the base name
`defParamCharset` | Default character set to use for values of part header parameters (e.g. filename) that are not extended parameters (that contain an explicit charset). Default: `'latin1'`

@@ -350,2 +353,2 @@ In an average web app, only `dest` might be required, and configured as shown in

[ossf-scorecard-badge]: https://api.scorecard.dev/projects/github.com/expressjs/multer/badge
[ossf-scorecard-visualizer]: https://ossf.github.io/scorecard-visualizer/#/projects/github.com/expressjs/multer
[ossf-scorecard-visualizer]: https://ossf.github.io/scorecard-visualizer/#/projects/github.com/expressjs/multer

@@ -5,3 +5,2 @@ var fs = require('fs')

var crypto = require('crypto')
var mkdirp = require('mkdirp')

@@ -22,3 +21,3 @@ function getFilename (req, file, cb) {

if (typeof opts.destination === 'string') {
mkdirp.sync(opts.destination)
fs.mkdirSync(opts.destination, { recursive: true })
this.getDestination = function ($0, $1, cb) { cb(null, opts.destination) }

@@ -25,0 +24,0 @@ } else {