В веб-приложении .Net Core я хочу, чтобы пользователь мог загрузить изображение. На локальном сервере все работает нормально, проблема возникает после публикации приложения на удаленном сервере. После публикации я не могу загрузить или удалить изображения.
Загрузить изображение Действие:
[HttpPost]
public async Task<IActionResult> EditProfile(EditUserProfileViewModel model)
{
string uniqueFileName = null;
if (model.Photo != null)
{
string usersPhotosUploadFolder = Path.Combine(hostingEnvironment.WebRootPath, "Users Photos");
//Check if there is old image and delete it from the folder if it exists
var oldPhotoName = photoRepository.GetOldUserPhoto(model.Id);
string oldPhotofullPath= Path.Combine(usersPhotosUploadFolder + oldPhotoName);
if (System.IO.File.Exists(oldPhotofullPath))
{
System.IO.File.Delete(oldPhotofullPath);
}
// Upload the image into "Users Photos" folder
uniqueFileName = Guid.NewGuid().ToString() + "_" + model.Photo.FileName;
string photoPath = Path.Combine(usersPhotosUploadFolder, uniqueFileName);
using (var fileSteam = new FileStream(photoPath, FileMode.Create))
{
await model.Photo.CopyToAsync(fileSteam);
}
}
var user = await userManager.FindByIdAsync(model.Id);
if (user == null)
{
ViewBag.ErrorMessage = $"User with Id: {model.Id} cannot be found";
return View("NotFound");
}
else
{
user.PhotoPath = uniqueFileName;
}
var result = await userManager.UpdateAsync(user);
if (result.Succeeded)
{
return RedirectToAction("Profile", "Account", new { id = user.Id });
}
foreach (var error in result.Errors)
{
ModelState.AddModelError("", error.Description);
}
return View(model);
}
}
Удалить изображение Действие:
public async Task<ActionResult> DeleteUserPhoto(EditUserProfileViewModel model)
{
var currentUserId = userManager.GetUserId(HttpContext.User);
var user = photoRepository.GetUser(currentUserId);
string usersPhotosUploadFolder = Path.Combine(hostingEnvironment.WebRootPath, "Users Photos");
var oldPhotoName = photoRepository.GetOldUserPhoto(user.Id);
string fullPath = Path.Combine(usersPhotosUploadFolder + "/" + oldPhotoName);
if (System.IO.File.Exists(fullPath))
{
System.IO.File.Delete(fullPath);
user.PhotoPath = null;
var result = await userManager.UpdateAsync(user);
}
return RedirectToAction("EditProfile", "Account", new { id = user.Id });
}
Есть ли какое-то решение, которое нужно преодолеть? это проблема?
Заранее спасибо:)