I am trying to upload a file using jquery ajax with handler (c#). The problem is, when I call the handler I get
context.Request.File.Count=0
You can add this kind of code to the handler file. Then you can post to this url(whateverroot/yourhandler.ashx)
The content type should be "multipart/form-data". For eg: If you're using a HTML form tag, then enctype="multipart/form-data".
public void ProcessRequest(HttpContext context)
{
var result = "0";
try
{
if (context.Request.Files.Count > 0)
{
HttpPostedFile file = null;
for (int i = 0; i < context.Request.Files.Count; i++)
{
file = context.Request.Files[i];
if (file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(<somepath>, fileName);
file.SaveAs(path);
result = "1";
}
}
}
}
catch { }
context.Response.Write(result);
}
i think the problem is with the contentType
try
contentType: 'multipart/form-data',
OR
contentType :'application/octet-stream';
see this post for more information
Sending multipart/formdata with jQuery.ajax
Your code...
$.ajax({
type: "POST",
url: "Services/UPloader.ashx",
contentType: "application/json; charset=utf-8",
success: OnComplete,
error: OnFail
});
..is missing the data
parameter. The way it's currently written, nothing is being sent to the handler.
You need to pass the file to the handler, using the data
parameter.
Please have a go through this link: http://www.aspdotnet-suresh.com/2015/02/jquery-upload-images-files-without-page-refresh-postaback-in-aspnet.html