handleUpload method
Handles Uploads. Requires a http Request (from the Shelf package).
Implementation
Future<Response> handleUpload(Request request) async {
if (!middlewareJwt(request)) {
return Response.forbidden(jsonEncode({'error': 'middlewareJwt'}));
}
if (!request.isMultipartForm) {
return Response(401); // not a multipart request
}
await for (final formData in request.multipartFormData.where((event) => event.name == config.storage?.name)) {
final dir = Directory(config.storage!.folder);
final name = '${dir.path}storage_${DateTime.now().millisecondsSinceEpoch}'
'.${formData.filename?.split('.').last}';
final file = File(name);
if (!file.existsSync()) {
file.createSync(recursive: true);
}
await file.writeAsBytes(
await formData.part.readBytes(),
mode: FileMode.writeOnly,
);
return Response.ok(
jsonEncode({
'url': basename(file.path),
}),
);
}
return Response.internalServerError();
}