【发布时间】:2018-08-28 20:00:30
【问题描述】:
我正在尝试使用 ASP.NET MVC 和 Ajax 上传多个图像。 能够使代码正常工作并上传 1 张图像,但发现很难在单独的图像文件夹中上传多张图像。 感谢任何帮助。
请找到 HTML 代码
<div class="row" style="margin-top:20px;">
<div class="col-md-6 col-sm-6 col-xs-12">
<div class="col-md-4" style="margin:0 !important;"><label style="margin-top:5px; margin-left: -15px;">Select image</label></div>
<div class="col-md-8" style="margin:0 !important;">
<span class="control-fileupload ">
<input type="file" id="Fimage0" name="ImageUpload" onchange='uploadImage(0)' class="form-control clearMembers">
</span>
</div>
</div>
<div class="col-md-6 col-sm-6 col-xs-12">
<div class="col-md-4" style="margin:0 !important;"><label style="margin-top:5px; margin-left: -15px;">Select image (Spouse)</label></div>
<div class="col-md-8" style="margin:0 !important;">
<span class="control-fileupload ">
<input type="file" id="Fimage1" name="ImageUpload" onchange='uploadImage(1)' class="form-control clearMembers">
</span>
</div>
</div>
</div>
请找到脚本,
正如我所做的那样,获取数组中的所有值,但我无法将值传递给 ajax 追加请罚款下面的 ajax。
var file;
var imagearray = [];
function uploadImage(Imageid) {
debugger
var fileUpload = document.getElementById("Fimage" + Imageid);
file = fileUpload.files[i];
imagearray.push(file)
}
请找到ajax
function SaveFamilyInfoDatatoDB() {
var formData = new FormData();
formData.append("Name", $('#FName').val());
//formData.append("file", $('#Fimage')[0].files[0]);
//formData.append("file", $('#FimageSpouse')[0].files[0]);
formData.append("file", $('#Fimage0')[0].files[0]);
$.ajax({
type: "POST",
url: "@Url.Action("SaveAndUpdateFamilyInfo","FamilyInfo")",
datatype: "JSON",
processData: false,
contentType: false,
data:
formData,
processData: false,
contentType: false,
success: function (Result) {
if (Result.type == "success") {
pushToDocumentArray();
}
else if (Result.type == "NicValidation") {
alert("NIC Already Added")
} else {
alert("11")
}
}
})
}
请找到控制器
public JsonResult SaveAndUpdateFamilyInfo(Family_Information FamilyInfoMainDeatils, HttpPostedFileBase[] file)
{
try
{
string imgepath = "Null";
if (file != null)
{
for (int i = 0; i < file.Length; i++)
{
}
//string filename = file.FileName;
//imgepath = filename;
//string extension = Path.GetExtension(file.FileName);
//// filename = filename + DateTime.Now.ToString("yymmssfff") + extension;
//// person.ImagePath = "~/Ima/" + filename;
//var path = Path.Combine(Server.MapPath("~/Images"), FamilyInfoMainDeatils.Name + filename);
//file.SaveAs(path);
}
string FamilyInfoID = Adapter.SaveAndUpdateFamilyInfo_(FamilyInfoMainDeatils, imgepath);
return Json(new { type = FamilyInfoID });
}
catch (Exception ex)
{
Log.ErrorLog(ex.Message);
throw;
}
}
【问题讨论】:
-
参考How to append whole set of model to formdata and obtain it in MVC。只需将 POST 方法中的参数更改为
HttpPostedFileBase[] ImageUpload(以匹配输入的名称),然后只需使用var formdata = new FormData($('form').get(0));(并删除您的uploadImage()函数和输入中的onchange。 -
嗨斯蒂芬我在使用时遇到错误 (var formdata = new FormData($('form').get(0))) --- formData 未定义 - 错误。
-
好吧,你目前正在做
var formData = new FormData();并没有得到那个错误,所以你声称的内容是不可能的(但它不应该用括号括起来) -
你需要删除那个答案——它的不是和答案!而且您不需要
formData.append代码行-var formdata = new FormData($('form').get(0));已经添加了表单控件的所有值,如我给您的链接中所述(假设您正确生成了您没有的视图-总是总是生成您使用@Html.***For(m => m.yourProperty)方法查看。
标签: javascript jquery asp.net asp.net-mvc asp.net-ajax