使用 ashx filehandler 上传文件并且 ajax 总是 return 错误
uploading file using ashx filehandler and ajax always return error
我正在使用来自 blueimp (https://blueimp.github.io/jQuery-File-Upload/) 的 jquery-文件上传。
我有 FileHandler.ashx 用于文件上传。
我无法return 更正来自文件处理程序的响应。在 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) {
},
});
});
结果总是 "fail" 而不是 "success"。错误是 SyntaxError: Unexpected token C
。
这在某种程度上与 Response I return 有关,它的格式不正确,但它应该是什么格式?
尝试这样的事情
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));
}
我正在使用来自 blueimp (https://blueimp.github.io/jQuery-File-Upload/) 的 jquery-文件上传。
我有 FileHandler.ashx 用于文件上传。
我无法return 更正来自文件处理程序的响应。在 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) {
},
});
});
结果总是 "fail" 而不是 "success"。错误是 SyntaxError: Unexpected token C
。
这在某种程度上与 Response I return 有关,它的格式不正确,但它应该是什么格式?
尝试这样的事情
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));
}