Problem:
You want to be able to POST a file from a generic HTML form to a generic ASP.NET handler (.ashx).
Solution:
First, make sure that your file input control on your HTML form has a name. If it doesn't have a name, you won't be able to access the file on the server side and it will appear not to have uploaded.
<input name="uploadedFile" id="uploadedFile" type="file" />
Second, make sure that your form action has an enctype parameter set to "multipart/form-data."
<form action="Upload.ashx" method="post" enctype="multipart/form-data" />
Now in your HTTP handler, you can either access that file by the name you provided it on the form:
context.Request.Files["uploadedFile"]
...or you can iterate through the files by key...
foreach (string f in context.Request.Files.AllKeys)
{
context.Request.Files[f].SaveAs(
HttpContext.Current.Server.MapPath("~/App_Data/" + ...));
}