【发布时间】:2020-11-23 19:41:31
【问题描述】:
我正在尝试上传多张图片,但我设法上传了我想要的尽可能多的图片。我唯一的问题是我选择的所有图像都复制了第一个图像。我在我的代码中找不到错误。
我的UploadImage 方法:
public static string UploadImage(string serverPath, IEnumerable<HttpPostedFileBase> files)
{
Guid uniqueName = Guid.NewGuid();
serverPath = serverPath.Replace("~", string.Empty);
string filePath;
foreach (HttpPostedFileBase item in files)
{
if (files != null && item.ContentLength > 0)
{
string extension = Path.GetExtension(item.FileName);
string fileName = $"{uniqueName}{extension}";
if (extension.ToLower() == ".jpeg" || extension.ToLower() == ".gif" || extension.ToLower() == ".png" || extension.ToLower() == ".jpg")
{
if (File.Exists(HttpContext.Current.Server.MapPath(serverPath + fileName)))
{
return "Already exists from same file";
}
else
{
filePath = Path.Combine(HttpContext.Current.Server.MapPath(serverPath),fileName);
item.SaveAs(filePath);
return serverPath+fileName;
}
}
else
{
return "Not the selected picture.";
}
}
else
{
return "No File Selected";
}
}
return "";
}
这是ImageController:
[HttpPost]
public ActionResult Index(TestClass model, IEnumerable<HttpPostedFileBase> files)
{
foreach (HttpPostedFileBase item in files)
{
model.ImagePath = ImageUploader.UploadImage("~/Images/", files) ;
db.TestClass.Add(model);
db.SaveChanges();
}
return View();
}
还有ImageClass:
public class TestClass
{
public int ID { get; set; }
public string Name { get; set; }
public string ImagePath { get; set; }
}
还有观点Index.cshtml:
@using (Html.BeginForm("Index","Image",FormMethod.Post, new { enctype="multipart/form-data"}))
{
<div>
Name
</div>
<div>
@Html.TextBoxFor(x=>x.Name)
</div>
<div>
<input multiple type="file" name="files" value="Browse" />
</div>
<div>
<button class="btn btn-primary">Save</button>
</div>
}
【问题讨论】:
标签: c# asp.net-mvc entity-framework