#c# #asp.net-mvc #asp.net-mvc-4
#c# #asp.net-mvc #asp.net-mvc-4
Вопрос:
У меня есть три элемента управления загрузкой файлов, все принимают один файл, но когда я получаю представление, все сохраняются как одно и то же изображение в моей папке с изображениями —
моя модель приведена ниже, в модели я взял три переменные типа HttpPostedFileBase и три переменные метки:
[NotMapped]
[DisplayName("Upload Image")]
public string ImagePath { get; set; }
[NotMapped]
public HttpPostedFileBase ImageFile { get; set; }
[NotMapped]
[DisplayName("Upload Aadhaar Card")]
public string AadhaarPathL { get; set; }
[NotMapped]
public HttpPostedFileBase AadhaarFile{get;set;}
[NotMapped]
[DisplayName("Upload PAN Card")]
public string PanPathL { get; set; }
[NotMapped]
public HttpPostedFileBase PanFile { get; set; }
В представлении я объявил тип файла text bos для загрузки изображения :
@using (Html.BeginForm("CreateVendor", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div style="margin-left:70px;">
@Html.AntiForgeryToken()
<div class="row">
<div class="col-md-6">
<div class="form-group">
@Html.LabelFor(model => model.ImagePath)
@Html.TextBoxFor(model => model.ImageFile, new { type = "file", name = "ImageFile", id = "ImageFile",@class= "form-control" })
@Html.ValidationMessageFor(model => model.ImagePath, "", new { @class = "text-danger" })
</div>
</div>
<div class="col-md-6">
<div class="form-group">
@Html.LabelFor(model => model.AadhaarPathL)
@Html.TextBoxFor(m => m.AadhaarFile,new { type = "file", name = "AadhaarFile", id = "AadhaarFile", @class = "form-control" })
@Html.ValidationMessageFor(model => model.AadhaarPathL, "", new { @class = "text-danger" })
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
@Html.LabelFor(model => model.PanPathL)
@Html.TextBoxFor(m => m.PanFile, new { type = "file", name = "PanFile", id = "PanFile", @class = "form-control" })
@Html.ValidationMessageFor(model => model.PanPathL, "", new { @class = "text-danger" })
</div>
</div>
<div class="col-md-6">
<div class="form-group">
@* Empty *@
</div>
</div>
</div>
</div>
}
И, наконец, в View code я получаю один за другим как uri, так и изображение, но каждый раз я получаю сохраненное одно и то же изображение для каждого изображения. я застрял здесь
[HttpPost]
public ActionResult CreateVendor(VendorList vendorList)
{
#region Photo Image
string fileName = Path.GetFileNameWithoutExtension(vendorList.ImageFile.FileName);
string extension = Path.GetExtension(vendorList.ImageFile.FileName);
fileName = fileName "Photo" DateTime.Now.ToString("yymmssfff") extension;
var uri = string.Format("{0}://{1}{2}{3}",
System.Web.HttpContext.Current.Request.Url.Scheme,
System.Web.HttpContext.Current.Request.Url.Host,
System.Web.HttpContext.Current.Request.Url.Port == 80 ? string.Empty : ":" System.Web.HttpContext.Current.Request.Url.Port,
"/Image/" fileName);
vendorList.ImagePath = "~/Image/" fileName;
fileName = Path.Combine(Server.MapPath("~/Image/"), fileName);
vendorList.ImageFile.SaveAs(fileName);
vendorList.PhotoPath = fileName;
vendorList.PhotoUrl = uri;
#endregion
#region Aadhaar Image
string fileAadhaarName = Path.GetFileNameWithoutExtension(vendorList.AadhaarFile.FileName);
string extensionAadhaar = Path.GetExtension(vendorList.AadhaarFile.FileName);
fileAadhaarName = fileAadhaarName vendorList.Email "Aadhaar" DateTime.Now.ToString("yymmssfff") extensionAadhaar;
var uriAadhaar = string.Format("{0}://{1}{2}{3}",
System.Web.HttpContext.Current.Request.Url.Scheme,
System.Web.HttpContext.Current.Request.Url.Host,
System.Web.HttpContext.Current.Request.Url.Port == 80 ? string.Empty : ":" System.Web.HttpContext.Current.Request.Url.Port,
"/Image/" fileAadhaarName);
vendorList.AadhaarPathL = "~/Image/" fileAadhaarName;
fileAadhaarName = Path.Combine(Server.MapPath("~/Image/"), fileAadhaarName);
vendorList.ImageFile.SaveAs(fileAadhaarName);
vendorList.AadhaarPath = fileAadhaarName;
vendorList.AadhaarUrl = uriAadhaar;
#endregion
#region Pan Image
string filePanName = Path.GetFileNameWithoutExtension(vendorList.PanFile.FileName);
string extensionPan = Path.GetExtension(vendorList.PanFile.FileName);
filePanName = filePanName vendorList.Email "Pan" DateTime.Now.ToString("yymmssfff") extensionPan;
var uriPan = string.Format("{0}://{1}{2}{3}",
System.Web.HttpContext.Current.Request.Url.Scheme,
System.Web.HttpContext.Current.Request.Url.Host,
System.Web.HttpContext.Current.Request.Url.Port == 80 ? string.Empty : ":" System.Web.HttpContext.Current.Request.Url.Port,
"/Image/" filePanName);
vendorList.PanPathL = "~/Image/" filePanName;
filePanName = Path.Combine(Server.MapPath("~/Image/"), filePanName);
vendorList.ImageFile.SaveAs(filePanName);
vendorList.PanPath = filePanName;
vendorList.PanUrl = uriPan;
}
Может кто-нибудь подсказать, что здесь происходит.
Комментарии:
1. Просто предложение: вместо того, чтобы объявлять 3
HttpPostedFileBase
свойства по отдельности, вы можете использовать одноList<HttpPostedFileBase>
свойство и использоватьmultiple
настройку при вводе файла, тогда вы можете ограничить загружаемые файлы максимум 3 файлами.2. @TetsuyaYamamoto, спасибо за предложение, но моя проблема в том, как я буду определять, какое изображение для какого поля