* Access to the /cgi-bin/ to put the receiving script. Prewritten CGI file-upload scripts are available.

* A form implemented something like this:

<form method="post" enctype="multipart/form-data" action="fup.cgi">

File to upload: <input type=file name=upfile><br>

Notes about the file: <input type=text name=note><br>

<input type=submit value=Press> to upload the file!

</form>

Not all browsers support form-based file upload, so try to give alternatives where possible.

The Perl CGI.pm module supports file upload. The most recent versions of the cgi-lib.pl library also support file upload. Also, if you need to do file upload in conjunction with form-to-email, the Perl package MIME::Lite handles email attachments.