Javascript 如何将引导文件输入数据获取到MVC5中的控制器

Javascript 如何将引导文件输入数据获取到MVC5中的控制器,javascript,jquery,asp.net-mvc,twitter-bootstrap,Javascript,Jquery,Asp.net Mvc,Twitter Bootstrap,我正在使用这个插件在我的ASP.NETMVC5申请表中上传一个图像。我不确定我需要在控制器上看到什么,或者我需要在javascript中做什么才能让它工作。目前,当我以以下格式提交数据时,会抛出一个错误 输入不是有效的Base-64字符串,因为它包含非Base-64字符、两个以上的填充字符或填充字符中的非法字符 这是我的学生管理员 [HttpPost] public ActionResult Edit(EditStudentViewModel studentViewModel)

我正在使用这个插件在我的ASP.NETMVC5申请表中上传一个图像。我不确定我需要在控制器上看到什么,或者我需要在javascript中做什么才能让它工作。目前,当我以以下格式提交数据时,会抛出一个错误

输入不是有效的Base-64字符串,因为它包含非Base-64字符、两个以上的填充字符或填充字符中的非法字符

这是我的学生管理员

[HttpPost]
    public ActionResult Edit(EditStudentViewModel studentViewModel)
    {
        if (ModelState.IsValid)
        {
            ...other code left out
这是我的javascript

$("#input-20").fileinput({
'type': 'POST',
'cache': false,
'browseClass': 'btn btn-primary btn-block',
'showCaption': false,
'showRemove': false,
'showUpload': false,
'uploadAsync': false,
'maxFileCount': 1,
'allowedFileExtensions': ['jpg', 'png', 'gif'],
'allowedFileTypes': ['image']
'uploadUrl': '@Url.Action("Edit", "Student")'
}))

*这些是正确的“uploadUrl”参数吗 这是我向控制器提交数据的表单。您可以看到我正在提交ViewModel和图像中的内容。表示iamge的字节[]位于视图模型中

@model YogaBandy.DomainClasses.ViewModels.Student.EditStudentViewModel

@{
ViewBag.Title = "Edit";
Layout = "~/Views/Shared/_Layout.cshtml";
}

@Html.Partial("_MenuPartial")

<div class="row submenurow">
    @Html.Partial("_StudentTeacherProfilePartial")
    <div class="col-md-9 submenucol2">
    @using (Html.BeginForm("Edit", "Student", new { ReturnUrl =    ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
    {
        @Html.AntiForgeryToken()
        @Html.HiddenFor(model => model.StudentId)
        @Html.HiddenFor(model => model.AspNetUserRefId)    
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })

        <div class="panel panel-default">
            <div class="panel-heading">
                <h3 class="panel-title">Student Picture</h3>
            </div>
            <div class="panel-body">
                @Html.TextBoxFor(model => model.TestImage, new { @type = "file", @id = "input-20" })
            </div>
        </div>
        <br/>
        <div class="panel panel-default">
            <div class="panel-heading">
                <h3 class="panel-title">Student Profile</h3>
            </div>
            <div class="panel-body">

                <div class="form-group">
                    @Html.LabelFor(model => model.CatchPhrase, htmlAttributes: new { @class = "control-label col-md-2" })
                    <div class="col-sm-10">
                        @Html.EditorFor(model => model.CatchPhrase, new { htmlAttributes = new { @class = "form-control" } })
                        @Html.ValidationMessageFor(model => model.CatchPhrase, "", new { @class = "text-danger" })
                    </div>
                </div>
                ...other form-group's left out below to save space  
            </div>
        </div>
        <br />
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Save" class="btn btn-default" />
            </div>
        </div>
    }
</div>

表单应该具有属性
enctype=“multipart/form data”
(或者插件是否添加了该属性?)。我认为您的属性应该是'HttpPostedFileBase TestImage'只是'HttpPostedFileBase TestImage'?我的viewmodel及其所有数据如何?我的意思是
TestImage
属性的类型应该是
HttpPostedFileBase
而不是
byte[]
,如果您发回您的模型,这就行了,谢谢!最后一个问题,如果这是一个配置文件图片,并且我可以将大小限制在varbinary(max)以下,那么我应该将它们保留在我的数据库中吗?还是我应该将它们存储在app_数据文件夹中?我已经看到了赞成和反对的论据。你真的需要自己做评估——太过基于观点,所以:)
public class EditStudentViewModel
{
    public byte[] TestImage { get; set; }
    ...other values left out
}