将HttpPostedFileBase传递给Controller

时间:2017-10-26 04:59:46

标签: c# jquery

我正在尝试将我视图中记录的音频blob传递给Controller。以下是我到目前为止所做的工作。

//控制器

[HttpPost]
public ActionResult Record(TestAudio data)
{
    return View();
}

和TestAudio数据如下

public class TestAudio
{
    public TestAudio()
    {
        UserDetails = new User();

    }
    public HttpPostedFileBase Sample;
    public User UserDetails;
}

public class User
{
    string UserName;
}

Jquery提交如下

$('#send').click(function () {
        var answer = {
            sample: recorded,  // Where recorded is a variable containing my blob
            userdetails : null
        }

        var data = new FormData();
        data.append("data", answer);
        debugger;

        $.ajax({
            type: 'POST',
            url: '../home/record',
            data: data,
            //contentType: 'application/my-binary-type', // set to whatever you like
            contentType: false,
            processData: false
    });
    });

但是,我的控制器中的数据为null。如果我只使用HttpPostedFileBase作为Controller参数,它可以工作。但是当我使用像TestAudio这样的复杂参数时,它会失败。

有人可以指导我吗?

1 个答案:

答案 0 :(得分:0)

我自己能找到答案。思想会在这里分享,以防其他人需要

var data = new FormData(); 
data.append("sample", blob); 
data.append("userdetails", userdetails); 

基本上结束了将它作为单独的表单数据元素。这样做的伎俩。