package Example::Controller::Upload;

use Moose;
use MooseX::MethodAttributes;
use Data::Dumper;

extends 'Catalyst::Controller';

sub upload :POST Chained(/) Args(0) Does(RequestModel) RequestModel(UploadRequest)  {
  my ($self, $c, $request) = @_;
  $c->res->body(Dumper +{
    notes => $request->notes,
    file => $request->file->slurp,
  });
}

__PACKAGE__->meta->make_immutable;