Jquery 从javascript向Mvc上传/流式传输大型base64字符串的正确方法是什么?

Jquery 从javascript向Mvc上传/流式传输大型base64字符串的正确方法是什么?,jquery,asp.net-mvc-3,Jquery,Asp.net Mvc 3,我想从javascript客户端向Mvc服务器发送一个大的base64字符串(数兆字节)。目前我们正在使用Ajax并发送如下字符串: Upload = function (aUrl, aFormData, aOnProgress, aOnSuccess, aOnTimeout, aOnError) { var settings = { url: aUrl, type: "POST", contentType: "application/json; cha

我想从javascript客户端向Mvc服务器发送一个大的base64字符串(数兆字节)。目前我们正在使用Ajax并发送如下字符串:

Upload = function (aUrl, aFormData, aOnProgress, aOnSuccess, aOnTimeout, aOnError) {
   var settings = {
      url: aUrl,
      type: "POST",
      contentType: "application/json; charset=utf-8",
      data: JSON.stringify(aFormData), // { aData: longBase64String }
      success: function (resultObject, textStatus) {
         if (textStatus == "success" && aOnSuccess) aOnSuccess(resultObject);
      },
      error: function (jqXHR, textStatus, errorThrown) {
         if (textStatus == "timeout" && aOnTimeout) aOnTimeout();
         else if (textStatus == "error" && aOnError) aOnError();
      }
   };

   settings.xhr = function () {
      var req = new XMLHttpRequest(); // Create xml http request.
      if (req) req.addEventListener('progress', aOnProgress, false); // Upload progress.
      return req;
   }

   return $.ajax(settings);
}
aFormData只是获取一个Json对象,其中包含base64字符串:
{aData:myString}

在Mvc方面,我们有以下控制器代码:

[Authorize, RequireHttp, HttpPost]
public ActionResult SetImage(String aData) {
   // Do something with the data.
   return Json("We got it.");
} 
现在-就将数据发送到服务器而言,这似乎在我们的本地主机测试环境中起作用。我担心的是,这可能不是一种很好的异步和缓冲方式的“流”,而是在发送之前可能会阻止所有内容,而且我没有看到对客户端的“真正”影响,因为它正在运行localhost。我只是对这里发生的事情了解不够

我希望客户端能够继续使用web应用程序,而不会出现任何阻塞。我的内容类型应该是不同的,还是Mvc端的参数应该是不同的?我希望这会被分块发送

即使我的方法是正确的,有人能告诉我一些幕后发生的事情吗?我已经看到一些帖子使用了一个包含“multipart”的内容类型?那是什么,我应该在这里使用它吗


谢谢。

只要使用jQuery异步发送请求(这是默认设置),它就不会阻止客户端

关于“多部分”问题,这很可能是指表单内容类型“多部分/表单数据”

内容类型“多部分/表单数据”应用于提交包含文件、非ASCII数据和二进制数据的表单

资料来源:

由于您发送的是base64内容,它既不是文件、“非ASCII数据”也不是二进制文件,所以应该可以