create static method
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';
}