@xpresser/file-uploader
TypeScript icon, indicating that this package has built-in type declarations

2.1.1 • Public • Published

Xpresser File Uploader Plugin

Alt text

Built on busboy, an easy plugin to handle file uploads from form request to your application storage folder.

Documentation: xpresserjs.com

Next

NPM: npm i @xpresser/file-uploader

YARN: yarn i @xpresser/file-uploader

This package has been converted to TypeScript.

New Features

While converting to TypeScript, we decided to chip in a few Features.

files.errorMessages()

This function returns an array of error messages when handling multiple files upload.

const photos = http.files("photos", {
  size: 0.0001 // intentional to make error.
})

if(photos.hasFilesWithErrors()){
  return photos.errorMessages() // [ 'File size is too large.']
}

Custom Error

The example below shows how the default error messages are defined.
Note: This applies to both single and multi-file uploads

import { Http } from "xpresser/types/http";

export function upload(http: Http){
  return http.file("photo",  {
    size: 1,
    customErrors: {
      field: (err) =>  `field not found: ${err.field}`,
      file: (err) => `No file found for field: ${err.field}`,
      size: "File is too large", // can also be plain string.
      mimetype: (err) => `File: "${err.filename}" mimetype does not match the expected mimetype: ${err.expected}`,
      extension: (err) => `File: "${err.filename}" has unsupported file extension`
    }
  });
}

Breaking Changes

Converting to typescript came with a few breaking changes listed below

UploadedFile private properties.

The properties belonging to the UploadedFile class listed below have been made private using typescript. They are for internal error checking.

[
  "stats",
  "customErrors",
  "cachedError",
  "expectedField",
  "expectedMimetype",
  "reachedLimit",
  "expectedExtensions"
]

Readme

Keywords

none

Package Sidebar

Install

npm i @xpresser/file-uploader

Weekly Downloads

0

Version

2.1.1

License

MIT

Unpacked Size

126 kB

Total Files

29

Last publish

Collaborators

  • trapcode