Start with your familiar upload INPUT on your HTML form and ensure that the HTML form tag has the parameter enctype="multipart/form-data"
Your Catalyst::Request object ($c->request
) provides two methods for accessing and manipulating the files.
Each file upload field will be instantiated as a Catalyst::Request::Upload object.
$c->request->upload
will return the Upload objects in scalar or list form.
$c->request->uploads
will return a reference to hash of Upload objects.
The Upload object provides several method for saving and copying the files.
Check out the man pages that I've linked above.