Я получаю сообщение об ошибке * System.IO.DirectoryNotFoundException: «Не удалось найти часть пути» * после создания каталога в файловой системе. Я пытаюсь создать папку в файловой системе, а затем добавить к ней файлы изображений, основываясь на вводе пользователя. Я получаю эту ошибку при попытке загрузить изображения после создания каталога. (Строка: file.SaveAs (Server.MapPath (filePath));)
Просмотр:
<div class="modal fade" id="addPortfolioModal" tabindex="-1" role="dialog" aria-labelledby="addPortfolioModalLabel" aria-hidden="true">
<div class="modal-dialog modal-xlg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Add Portfolio</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
@using (Html.BeginForm("AddPortfolio", "Admin", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div class="modal-body">
<div class="container">
<div class="row">
<div class="col-md-6 col-sm-12 modal-form-margin">
@Html.Label("title", "Title: ")
</div>
<div class="col-md-6 col-sm-12 modal-form-margin">
@Html.TextBox("title", null, new { type = "text", @class = "w-100", required = "required" })
</div>
<div class="col-md-12 col-sm-12 modal-form-margin">
@Html.Label("description", "Description: ")
</div>
<div class="col-md-12 col-sm-12 modal-form-margin">
@Html.TextArea("description", null, new { type = "text", @class = "w-100", @id = "description" })
</div>
<div class="col-md-6 col-sm-12 modal-form-margin">
@Html.Label("images", "Image(s): ")
</div>
<div class="col-md-6 col-sm-12 modal-form-margin">
<input type="file" name="imageFiles" id="imageFiles" required multiple />
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Add Portfolio</button>
</div>
}
</div>
</div>
Контроллер:
[HttpPost]
[ValidateInput(false)]
public ActionResult AddPortfolio(string title, string description, HttpPostedFileBase[] ImageFiles)
{
if (!checkLoginCredentials())
{
return RedirectToAction("Login", "Home");
}
else if (ImageFiles.Count() < 1)
{
TempData["imagesFail"] = true;
}
else
{
string dir = "Content/img/portfolio/" + title;
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(Server.MapPath("~/" + dir));
List<PortfolioImageModel> images = new List<PortfolioImageModel>();
string extension = "";
string fileName = "";
int orderNumCounter = 1;
int portfolioResult = siteServices.addPortfolio(title, description);
if(portfolioResult > 0)
{
int portfolioId = siteServices.getPortfolioIdByTitle(title);
foreach (var file in ImageFiles)
{
if (file != null)
{
if (file.ContentLength > 0)
{
if (Path.GetExtension(file.FileName).ToLower() == ".jpg" || Path.GetExtension(file.FileName).ToLower() == ".png" || Path.GetExtension(file.FileName).ToLower() == ".jpeg" || Path.GetExtension(file.FileName).ToLower() == ".gif")
{
extension = Path.GetExtension(file.FileName);
var filePath = Path.Combine(dir, file.FileName);
file.SaveAs(Server.MapPath(filePath));
PortfolioImageModel temp = new PortfolioImageModel();
temp.setImgLoc(fileName);
temp.setPortfolioId(portfolioId);
temp.setOrderNum(orderNumCounter);
images.Add(temp);
orderNumCounter++;
}
}
}
}
int imagesResult = siteServices.addPortfolioImages(images);
if(imagesResult < 1)
{
TempData["imagesFail"] = true;
}
}
else
{
TempData["databaseConnectionFail"] = true;
}
}
else
{
TempData["portfolioExists"] = true;
}
}
return RedirectToAction("Portfolio", "Admin");
}
Есть идеи?