Multer Storage Cloudinary
A multer storage engine for Cloudinary. Also consult the Cloudinary API.
Installation
npm install multer-storage-cloudinary
Usage
const cloudinary = v2;const CloudinaryStorage = ;const express = ;const multer = ; const app = ; const storage = cloudinary: cloudinary params: folder: 'some-folder-name' format: async 'png' // supports promises as well 'computed-filename-using-request' ; const parser = ; app;
File properties
File objects will expose the following properties mapped from the Cloudinary API:
Key | Description |
---|---|
filename |
public_id of the file on cloudinary |
path |
A URL for fetching the file |
size |
Size of the file in bytes |
Options
Storage can be configured using the options
argument passed to the CloudinaryStorage
constructor.
const CloudinaryStorage = ; const storage = cloudinary: cloudinary params: // upload paramters ;
All parameters are optional except the configured Cloudinary API object:
Parameter | Description | Type |
---|---|---|
options.cloudinary |
A Cloudinary API object The API must be configured by the user |
object required |
options.params |
An object or a function that resolves to an object which can contain any/all properties described in the Cloudinary upload API docs. Read below for more information | object or function |
Each property in the params object (either directly or resolved from the function) can either be a static value or an async function that resolves to the required value. All upload parameters specified in the Cloudinary docs are supported.
Note: public_id
is different in that it must always be a functional parameter
Functional parameters are called on every request and can be used in the following way:
const cloudinary = v2;const CloudinaryStorage = ; const storage = cloudinary: cloudinary params: 'folder_name' format: async { // async code using `req` and `file` // ... return 'jpeg'; } 'some_unique_id' ;
You can also provide all params using a single function
const cloudinary = v2;const CloudinaryStorage = ; const storage = cloudinary: cloudinary params: async { // async code using `req` and `file` // ... return folder: 'folder_name' format: 'jpeg' public_id: 'some_unique_id' ; };
Typescript
This library is written is typescript and so provides all types necessary for use in a typescript project.
Testing
The Cloudinary API must be configured using the CLOUDINARY_URL
environment variable in order to run the tests.
All test files are stored in a seperate Cloudinary folder, which is deleted after tests finish.
npm test