C# 如何在asp.net mvc中通过xmlhttprequest发送blob数据

C# 如何在asp.net mvc中通过xmlhttprequest发送blob数据,c#,jquery,xmlhttprequest,C#,Jquery,Xmlhttprequest,我正在通过Xhr发送blob数据。但是我没有在控制器中获取blob数据 public ActionResult Upload() { var r = Request; byte[] ba = r.BinaryRead(r.ContentLength); ... } 我编写了如下代码: var url = "Home/Content" var oReq = new XMLHttpRequest(); oReq.open("POST", url, true); var bl

我正在通过
Xhr
发送blob数据。但是我没有在控制器中获取blob数据

public ActionResult Upload()
{
    var r = Request;
    byte[] ba = r.BinaryRead(r.ContentLength);
   ...
 }
我编写了如下代码:

var url = "Home/Content"
var oReq = new XMLHttpRequest();
oReq.open("POST", url, true);
var blob = new Blob(['abc123'], {type: 'text/plain'}); 
oReq.send("data="+blob);
在控制器中,我定义如下:

public ActionResult Content(string data)
{
  return Json("suc", JsonRequestBehavior.AllowGet);
}

但是我正在检索的
数据
为空。我做错了什么。

我已经解决了这个问题。 您将二进制数据发送到mvc控制器方法,在该方法中,您将以字符串形式获取二进制值。请注意,这是问题的主要原因,如果您要使用保存方法,则应使用该方法

var fileContent = window.btoa(blob);

oReq.send(JSON.stringify({data: fileContent}));
因此,在服务器端方法中

byte[] fileByte = Convert.FromBase64String(fileContent);
客户端更改

oReq.send("data="+blob);

服务器端/控制器

public ActionResult Upload()
{
    var r = Request;
    byte[] ba = r.BinaryRead(r.ContentLength);
   ...
 }
JavaScript可以传输二进制数据。看


基本上,二进制数据的发送和接收没有名称/变量。

Actionresult=>JsonResult?@codebrain我使用的是Actionresult