Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ on:
branches: ["main", "v2"]
pull_request:
# The branches below must be a subset of the branches above
branches: ["main", "v2]
branches: ["main", "v2"]
schedule:
- cron: "0 0 * * 1"

Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ Key | Description
`fileFilter` | Function to control which files are accepted
`limits` | Limits of the uploaded data
`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'`

In an average web app, only `dest` might be required, and configured as shown in
the following example.
Expand Down Expand Up @@ -345,4 +346,4 @@ For information on how to build your own storage engine, see [Multer Storage Eng
[npm-url]: https://npmjs.org/package/multer
[npm-version-image]: https://badgen.net/npm/v/multer
[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
3 changes: 2 additions & 1 deletion doc/README-ar.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ app.post('/profile', upload.none(), function (req, res, next) {
`fileFilter` | دالة للسيطرة على الملفات التي يتم قبولها
`limits` | حدود البيانات التي تم تحميلها
`preservePath` | الاحتفظ بالمسار الكامل للملفات بدلاً من الاسم الأساسي
`defParamCharset` | مجموعة الأحرف الافتراضية لاستخدامها لقيم معاملات رأس الجزء (مثل اسم الملف) التي ليست معاملات موسعة (لا تحتوي على مجموعة أحرف صريحة). الافتراضي: `'latin1'`

في تطبيق ويب متوسط ​​، قد تكون هناك حاجة فقط إلى `dest`، وتكوينها كما هو موضح في
المثال التالي :
Expand Down Expand Up @@ -318,4 +319,4 @@ app.post('/profile', function (req, res) {
[npm-url]: https://npmjs.org/package/multer
[npm-version-image]: https://badgen.net/npm/v/multer
[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
3 changes: 2 additions & 1 deletion doc/README-es.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ Clave (key) | Descripción
`fileFilter` | Función para controlar qué archivos son aceptados
`limits` | Límites de los datos subidos
`preservePath` | Mantiene la ruta completa de la ubicación de los archivos, en vez de sólo sus nombres
`defParamCharset` | Conjunto de caracteres por defecto para usar en valores de parámetros de encabezados de partes (ej. nombre de archivo) que no son parámetros extendidos (que contienen un conjunto de caracteres explícito). Por defecto: `'latin1'`

En la aplicación web promedio es probable que sólo se requiera `dest`, siendo configurado como en el siguiente ejemplo:

Expand Down Expand Up @@ -305,4 +306,4 @@ Para más información acerca de cómo construir tu propio mecanismo de almacena
[npm-url]: https://npmjs.org/package/multer
[npm-version-image]: https://badgen.net/npm/v/multer
[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
3 changes: 2 additions & 1 deletion doc/README-fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ Clé | Description
`fileFilter` | Fonction pour contrôler quels fichiers sont acceptés
`limits` | Limites des données téléchargées
`preservePath` | Conservez le chemin complet des fichiers au lieu du nom de base uniquement
`defParamCharset` | Jeu de caractères par défaut à utiliser pour les valeurs des paramètres d'en-tête de partie (par exemple, nom de fichier) qui ne sont pas des paramètres étendus (qui contiennent un jeu de caractères explicite). Par défaut : `'latin1'`

Dans une application Web moyenne, seul `dest` peut être requis et configuré comme indiqué dans
l'exemple suivant.
Expand Down Expand Up @@ -338,4 +339,4 @@ Pour plus d'informations sur la création de votre propre moteur de stockage, co
[npm-url]: https://npmjs.org/package/multer
[npm-version-image]: https://badgen.net/npm/v/multer
[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
3 changes: 2 additions & 1 deletion doc/README-ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ Key | Description
`fileFilter` | 어떤 파일을 허용할지 제어하는 함수
`limits` | 업로드 된 데이터의 한도
`preservePath` | 파일의 base name 대신 보존할 파일의 전체 경로
`defParamCharset` | 확장 매개변수가 아닌 부분 헤더 매개변수 값(예: 파일명)에 사용할 기본 문자 집합(명시적 문자 집합을 포함하지 않음). 기본값: `'latin1'`

보통의 웹 앱에서는 `dest` 옵션 정도만 필요할지도 모릅니다. 설정 방법은 아래의 예제에 나와있습니다.

Expand Down Expand Up @@ -265,4 +266,4 @@ app.post('/profile', function (req, res) {
[npm-url]: https://npmjs.org/package/multer
[npm-version-image]: https://badgen.net/npm/v/multer
[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
3 changes: 2 additions & 1 deletion doc/README-pt-br.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ Key | Descrição
`fileFilter` | Função para controlar quais arquivos são aceitos
`limits` | Limites dos dados enviados
`preservePath` | Mantenha o caminho completo dos arquivos em vez de apenas o nome base
`defParamCharset` | Conjunto de caracteres padrão para usar em valores de parâmetros de cabeçalho de parte (por exemplo, nome do arquivo) que não são parâmetros estendidos (que contêm um conjunto de caracteres explícito). Padrão: `'latin1'`

Em um web app básico, somente o `dest` pode ser necessário, e configurado como mostrado no exemplo a seguir:

Expand Down Expand Up @@ -312,4 +313,4 @@ Para obter informações sobre como criar seu próprio mecanismo de armazenament
[npm-url]: https://npmjs.org/package/multer
[npm-version-image]: https://badgen.net/npm/v/multer
[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
3 changes: 2 additions & 1 deletion doc/README-ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ Multer принимает объект с опциями. Базовая опц
`fileFilter` | Функция для контроля принятия файлов
`limits` | Ограничения по загрузке
`preservePath` | Сохранять полный путь к файлам вместо только базового имени
`defParamCharset` | Кодировка по умолчанию для значений параметров заголовков частей (например, имя файла), которые не являются расширенными параметрами (не содержат явную кодировку). По умолчанию: `'latin1'`

Обычно для веб-приложения нужно обязательно переопределить `dest`, как показано в примере ниже.

Expand Down Expand Up @@ -275,4 +276,4 @@ app.post('/profile', function (req, res) {
[npm-url]: https://npmjs.org/package/multer
[npm-version-image]: https://badgen.net/npm/v/multer
[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
3 changes: 2 additions & 1 deletion doc/README-uz.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ Kalit(key) | Ta'rif
`fileFilter` | Qaysi fayllar qabul qilinishini boshqarish funksiyasi
`limits` | Yuklash chegarasi
`preservePath` | Asosiy nom o'rniga fayllarning to'liq yo'lini saqlash
`defParamCharset` | Kengaytirilgan parametrlar bo'lmagan qism sarlavha parametrlari qiymatlari (masalan, fayl nomi) uchun ishlatish uchun standart belgilar to'plami (aniq belgilar to'plamini o'z ichiga olmaydi). Standart: `'latin1'`

O'rtacha veb-ilovada faqat `dest` kerak bo'lishi mumkin va quyidagicha sozlanishi mumkin

Expand Down Expand Up @@ -280,4 +281,4 @@ O'zingizning saqlash dvigatelingizni qanday yaratish haqida ma'lumot olish: [Max
[npm-url]: https://npmjs.org/package/multer
[npm-version-image]: https://badgen.net/npm/v/multer
[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
3 changes: 2 additions & 1 deletion doc/README-vi.md
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ Dưới đây là các tùy chọn mà bạn có thể sử dụng:
| `fileFilter` | Hàm để xử lý chỉ những file nào mới được chấp nhận |
| `limits` | Giới hạn dung lượng file được upload |
| `preservePath` | Giữ đầy đủ đường dẫn tới file thay vì chỉ tên file |
| `defParamCharset` | Bộ ký tự mặc định để sử dụng cho các giá trị tham số tiêu đề phần (ví dụ: tên tệp) không phải là tham số mở rộng (không chứa bộ ký tự rõ ràng). Mặc định: `'latin1'` |

Nói chung với web app, chỉ `dest` mới cần khai báo, như bên dưới:

Expand Down Expand Up @@ -297,4 +298,4 @@ app.post('/profile', function(req, res) {
[npm-url]: https://npmjs.org/package/multer
[npm-version-image]: https://badgen.net/npm/v/multer
[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
3 changes: 2 additions & 1 deletion doc/README-zh-cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ Key | Description
`fileFilter` | 文件过滤器,控制哪些文件可以被接受
`limits` | 限制上传的数据
`preservePath` | 保存包含文件名的完整文件路径
`defParamCharset` | 用于部分标头参数值(例如文件名)的默认字符集,这些参数不是扩展参数(不包含显式字符集)。默认值:`'latin1'`

通常,一般的网页应用,只需要设置 `dest` 属性,像这样:

Expand Down Expand Up @@ -270,4 +271,4 @@ app.post('/profile', function (req, res) {
[npm-url]: https://npmjs.org/package/multer
[npm-version-image]: https://badgen.net/npm/v/multer
[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
3 changes: 3 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ function Multer (options) {

this.limits = options.limits
this.preservePath = options.preservePath
this.defParamCharset = options.defParamCharset || 'latin1'
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This default shouldn't need to be passed explicitly, busboy uses latin1 anyway when the defParamCharset passed is undefined.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I know - I added it in case something will change in busboy default settings, multer will still behave consistently
@LinusU @bjohansebas @UlisesGascon what do you think? I can change it if it's unnecessary precaution

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It feels like the default should be utf-8 but that would also technically be a breaking API change for multer. Thank you for maintaining consistency. :)

this.fileFilter = options.fileFilter || allowAll
}

Expand Down Expand Up @@ -47,6 +48,7 @@ Multer.prototype._makeMiddleware = function (fields, fileStrategy) {
return {
limits: this.limits,
preservePath: this.preservePath,
defParamCharset: this.defParamCharset,
storage: this.storage,
fileFilter: wrappedFileFilter,
fileStrategy: fileStrategy
Expand Down Expand Up @@ -77,6 +79,7 @@ Multer.prototype.any = function () {
return {
limits: this.limits,
preservePath: this.preservePath,
defParamCharset: this.defParamCharset,
storage: this.storage,
fileFilter: this.fileFilter,
fileStrategy: 'ARRAY'
Expand Down
8 changes: 7 additions & 1 deletion lib/make-middleware.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ function makeMiddleware (setup) {
var fileFilter = options.fileFilter
var fileStrategy = options.fileStrategy
var preservePath = options.preservePath
var defParamCharset = options.defParamCharset

req.body = Object.create(null)

Expand All @@ -34,7 +35,12 @@ function makeMiddleware (setup) {
var busboy

try {
busboy = Busboy({ headers: req.headers, limits: limits, preservePath: preservePath })
busboy = Busboy({
headers: req.headers,
limits: limits,
preservePath: preservePath,
defParamCharset: defParamCharset
})
} catch (err) {
return next(err)
}
Expand Down
Loading
Loading