Невозможно загрузить изображение в папку после публикации моего основного веб-приложения .net на удаленном сервере. - PullRequest
0 голосов
/ 02 октября 2019

В веб-приложении .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 });
        }

Есть ли какое-то решение, которое нужно преодолеть? это проблема?

Заранее спасибо:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...