fileUploadRules static method

Map<String, String> fileUploadRules({
  1. bool required = true,
  2. bool nullable = false,
  3. List<String> allowedMimes = const [],
  4. int? maxSizeKB,
  5. bool multiple = false,
})

Quick method to validate file uploads

Implementation

static Map<String, String> fileUploadRules({
  bool required = true,
  bool nullable = false,
  List<String> allowedMimes = const [],
  int? maxSizeKB,
  bool multiple = false,
}) {
  final rules = <String>[];

  if (nullable) rules.add('nullable');
  if (required && !nullable) rules.add('required');

  if (multiple) {
    rules.add('array');

    final itemRules = <String>['file'];
    if (allowedMimes.isNotEmpty) {
      itemRules.add('mimes:${allowedMimes.join(',')}');
    }
    if (maxSizeKB != null) {
      itemRules.add('max:$maxSizeKB');
    }

    return {
      'attachments': rules.join('|'),
      'attachments.*': itemRules.join('|'),
    };
  } else {
    rules.add('file');
    if (allowedMimes.isNotEmpty) {
      rules.add('mimes:${allowedMimes.join(',')}');
    }
    if (maxSizeKB != null) {
      rules.add('max:$maxSizeKB');
    }

    return {'attachment': rules.join('|')};
  }
}