Javascript 如何将引导文件输入数据获取到MVC5中的控制器
我正在使用这个插件在我的ASP.NETMVC5申请表中上传一个图像。我不确定我需要在控制器上看到什么,或者我需要在javascript中做什么才能让它工作。目前,当我以以下格式提交数据时,会抛出一个错误 输入不是有效的Base-64字符串,因为它包含非Base-64字符、两个以上的填充字符或填充字符中的非法字符 这是我的学生管理员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)
[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
}