I am using jquery-file-upload from blueimp (https://blueimp.github.io/jQuery-File-Upload/).
I have FileHandler.ashx for file uploads.
I am not able to return correct response from file handler. On javascript side, it always receives error. Please, guide me.
// File handler (FileHandler.ashx)
public void ProcessRequest(HttpContext context)
{
string fname = String.Empty;
if (context.Request.Files.Count > 0)
{
HttpFileCollection files = context.Request.Files;
for (int i = 0; i < files.Count; i++)
{
HttpPostedFile file = files[i];
fname = context.Server.MapPath("~/UserImageUploads/" + file.FileName);
file.SaveAs(fname);
}
}
context.Response.ContentType = "text/plain";
context.Response.Write(fname);
context.Response.StatusCode = 200;
}
// javascript part:
$(function () {
'use strict';
// Change this to the location of your server-side upload handler:
var url = 'FileHandler.ashx';
$('#fileupload').fileupload({
url: url,
dataType: 'json',
done: function (e, data) {
},
fail: function (e, data) {
},
});
});
The resut is always "fail" and never "success". Error is SyntaxError: Unexpected token C
.
This is somehow related to Response I return, it is in incorrect format, but what format should it be there?
Try something like this
public class ResponseMsg
{
public string status;
public string name;
}
public void ProcessRequest(HttpContext context)
{
string fname = String.Empty;
if (context.Request.Files.Count > 0)
{
HttpFileCollection files = context.Request.Files;
for (int i = 0; i < files.Count; i++)
{
HttpPostedFile file = files[i];
fname = context.Server.MapPath("~/UserImageUploads/" + file.FileName);
file.SaveAs(fname);
}
}
context.Response.ContentType = "text/plain";
// context.Response.Write(fname);
// context.Response.StatusCode = 200;
ResponseMsg r = new ResponseMsg
{
status = "success",
name =fname
};
context.Response.Write(JsonConvert.SerializeObject(r));
}