UNPKG

multer-utility

Version:

A comprehensive TypeScript wrapper for Multer with enhanced features including memory/disk storage, flexible configuration, and file management utilities

126 lines 4.15 kB
import multer from "multer"; import { Request } from "express"; export interface UploadConfig { storage?: 'disk' | 'memory'; uploadDir?: string; allowedMimeTypes?: string[]; allowedExtensions?: string[]; maxFileSize?: number; useTimestamp?: boolean; sanitizeFilenames?: boolean; customNaming?: (file: Express.Multer.File) => string; createDirIfNotExists?: boolean; preserveOriginalName?: boolean; } export interface FileValidationResult { isValid: boolean; error?: string; } export interface MulterUtilityRequest extends Request { file?: Express.Multer.File; files?: Express.Multer.File[] | { [fieldname: string]: Express.Multer.File[]; }; } export declare class UploadService { private readonly config; private readonly uploader; private static readonly DEFAULT_CONFIG; constructor(config?: UploadConfig); /** * Ensure upload directory exists */ private ensureUploadDirExists; /** * Get storage engine based on configuration */ private getStorageEngine; /** * Generate filename based on configuration */ private generateFilename; /** * File filter for validation */ private fileFilter; /** * Validate file against configured rules */ validateFile(file: Express.Multer.File): FileValidationResult; /** * Upload single file */ single(fieldName: string): import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>; /** * Upload multiple files (array) */ array(fieldName: string, maxCount?: number): import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>; /** * Upload multiple files (different fields) */ fields(fields: multer.Field[]): import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>; /** * Handle any files */ any(): import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>; /** * No files expected */ none(): import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>; /** * Get upload configuration */ getConfig(): Required<UploadConfig>; /** * Get file info for uploaded file */ getFileInfo(file: Express.Multer.File): { originalName: string; filename: string; mimetype: string; size: number; encoding: string; fieldname: string; destination: string; path: string; buffer: Buffer<ArrayBufferLike>; }; /** * Delete uploaded file (disk storage only) */ deleteFile(filename: string): Promise<boolean>; /** * Check if file exists (disk storage only) */ fileExists(filename: string): boolean; /** * Get file path (disk storage only) */ getFilePath(filename: string): string; /** * Get upload directory stats */ getUploadStats(): Promise<{ message: string; totalFiles?: undefined; totalSize?: undefined; files?: undefined; } | { totalFiles: number; totalSize: number; files: { name: string; size: number; created: Date; modified: Date; }[]; message?: undefined; }>; } export declare const createDiskUploader: (uploadDir: string, config?: Partial<UploadConfig>) => UploadService; export declare const createMemoryUploader: (config?: Partial<UploadConfig>) => UploadService; export declare const createImageUploader: (uploadDir?: string) => UploadService; export declare const createAudioUploader: (uploadDir?: string) => UploadService; export { MulterError } from 'multer'; export type { Request } from 'express'; //# sourceMappingURL=index.d.ts.map