1

我正在通过Xhr. 但我没有在控制器中获取 blob 数据

我编写了如下代码:

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);
}

data我正在检索的是空的。我做错了什么。

4

2 回答 2

0

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

var fileContent = window.btoa(blob);

oReq.send(JSON.stringify({data: fileContent}));

所以在你的服务器端方法中

byte[] fileByte = Convert.FromBase64String(fileContent);
于 2015-07-09T05:48:27.317 回答
0

客户端变更

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

oReq.send(blob);

服务器端/控制器

public ActionResult Upload()
{
    var r = Request;
    byte[] ba = r.BinaryRead(r.ContentLength);
   ...
 }

JavaScript 可以传输二进制数据。看这里

基本上二进制数据是在没有名称/变量的情况下发送和接收的。

于 2017-12-27T04:54:30.617 回答