create static method

Future<String> create(
  1. UploadedFile file, {
  2. String? subdirectory,
})

Saves an uploaded file to the server.

file - The uploaded file. subdirectory - Optional folder inside /public.

Examples: Storage.create(file) → public/uploads/ Storage.create(file, subdirectory: 'schools/logo')

Implementation

static Future<String> create(
  UploadedFile file, {
  String? subdirectory,
}) async {
  final safeFileName = file.filename.replaceAll(' ', '_');
  final uniqueFileName = '${Uuid().v4()}_$safeFileName';

  // Determine folder
  final folder = (subdirectory == null || subdirectory.isEmpty)
      ? _defaultUploadsFolder
      : subdirectory;

  final directoryPath = '$_baseDir/$folder';

  final Directory dir = Directory(directoryPath);
  if (!await dir.exists()) {
    await dir.create(recursive: true);
  }

  final File newFile = File('$directoryPath/$uniqueFileName');
  await file.content.pipe(newFile.openWrite());

  // Return public URL
  return '/$folder/$uniqueFileName';
}