Express Sweet API Reference - v4.0.0
    Preparing search index...

    Interface UploadConfig

    File upload configuration interface using Multer. Defines dynamic upload middleware resolution per request based on path and method.

    // config/upload.js
    export default {
    enabled: true,
    resolve_middleware: (req, multer) => {
    if (req.path === '/api/admin/firms' && req.method === 'POST') {
    const upload = multer({ storage: multer.memoryStorage() });
    return upload.fields([
    { name: 'logo', maxCount: 1 },
    { name: 'eyecatch', maxCount: 1 }
    ]);
    }
    return null;
    }
    };
    interface UploadConfig {
        enabled: boolean;
        resolve_middleware: (
            req: Request,
            multer: typeof multer,
        ) => null | Function;
    }
    Index

    Properties

    enabled: boolean

    Enable file upload middleware, defaults to disabled (false). If config/upload.js doesn't exist, upload middleware won't be applied.

    resolve_middleware: (req: Request, multer: typeof multer) => null | Function

    Hook function to dynamically resolve multer middleware based on request. Return a multer middleware instance or null to skip upload handling for the request.

    // Single file upload
    resolve_middleware: (req, multer) => {
    if (req.path === '/api/user/avatar' && req.method === 'POST') {
    const upload = multer({ storage: multer.memoryStorage() });
    return upload.single('avatar');
    }
    return null;
    }
    // Multiple files with same field name
    resolve_middleware: (req, multer) => {
    if (req.path === '/api/gallery' && req.method === 'POST') {
    const upload = multer({ storage: multer.memoryStorage() });
    return upload.array('photos', 10);
    }
    return null;
    }
    // Multiple file fields
    resolve_middleware: (req, multer) => {
    if (req.path === '/api/admin/firms' && req.method === 'POST') {
    const upload = multer({ storage: multer.memoryStorage() });
    return upload.fields([
    { name: 'logo', maxCount: 1 },
    { name: 'eyecatch', maxCount: 1 }
    ]);
    }
    return null;
    }