【发布时间】:2021-07-19 16:40:33
【问题描述】:
我是 ajax 新手,目前我正在使用 ajax 尝试将 base64string 从视图发送到控制器并获得如下的 JsonResult:
$.ajax({
url: "@Url.Action("UploadSignature", "JobList")",
type: "POST",
dataType: "json",
data: { photoByte: base64String, eventRecordID: "123456" },
success: function (result) {
if (result.success === true) {
alert("Signature uploaded !");
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest);
}
});
我的控制器方法如下:
[HttpPost]
public async Task<ActionResult> UploadSignature(string photoByte, string eventRecordID)
{
byte[] photoAfterConvert = Convert.FromBase64String(photoByte);
...
//Upload photoAfterConvert to server
...
return Json(new { success = true });
}
但是,上面的代码有时不起作用,尤其是当 base64String 太长时。一旦我调用了 ajax,它就会挂起并且永远不会进入控制器方法。大约1分钟后,会触发错误回调函数,消息如下所示,无意义。
{"readyState":0,"status":0,"statusText":"error"}
因此,我在想有没有其他方法可以通过 ajax 将大字符串数据从视图发送到控制器?发送 blob 是一个不错的选择吗?如果是,我如何通过发送 blob 来实现它?我需要在控制器参数中放入什么数据类型才能接受 blob?
提前感谢您的帮助。
【问题讨论】:
标签: javascript ajax asp.net-mvc base64 blob