我使用jquery-file-upload from blueimp (https://blueimp.github.io/jQuery-File-Upload/)
我有FileHandler。
无法从文件处理程序返回正确的响应。在javascript端,它总是接收错误。请指引我。
//文件处理程序(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部分:
$(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) {
},
});
});
结果总是"失败"而不是"成功"。错误是SyntaxError: Unexpected token C
。这在某种程度上与我返回的响应有关,它的格式不正确,但它应该是什么格式?
试试这样
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));
}