handleUpload method

Future<Response> handleUpload(
  1. Request request
)

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();
}