Skip to content

File Uploads

Nubie supports elegant file uploads through its @FileUpload() decorator, enabling both simple and advanced handling via middleware injection.

Decorator Overview

@FileUpload() is a method-level decorator that attaches middleware to a route to handle file uploads of different types: single file, multiple files, or field-based grouping.

Import

ts
import { FileUpload, FileUploadType } from "nubie";

Syntax & Options

ts
@FileUpload(field, uploadType?, maxCount?)
ParameterTypeDescription
fieldstring | TUploadFieldsField name or list of fields
uploadTypeFileUploadTypeType of upload (defaults to Single)
maxCountnumberOnly for Multiple type. Default: 2

Upload Types

The decorator supports three file upload modes:

TypeEnum ValueDescription
SingleFileUploadType.SingleUpload one file using a single field name
MultipleFileUploadType.MultipleUpload multiple files with one field name
FieldsFileUploadType.FieldsUpload files mapped to multiple fields

Examples

Single File Upload

ts
@FileUpload("avatar", FileUploadType.Single)
@Post("/profile")
async updateProfileAsync(@File() file: MulterFile) {
}

Multiple File Upload

ts
@FileUpload("photos", FileUploadType.Multiple, 5)
@Post("/album")
async uploadPhotosAsync(@Files() files: MulterFile[]) {
}

Field-Based Uploads

ts
@FileUpload([
  { name: "resume", maxCount: 1 },
  { name: "certificates", maxCount: 3 }
])
@Post("/job/apply")
async applyForJobAsync(@Files() files: MulterFile[]) {
}

Notes

  • The default maxCount for multiple uploads is 2 if not specified.