Как получить относительный URI моего сайта? - PullRequest
0 голосов
/ 22 ноября 2011

У меня есть меню, где пользователи могут загружать свои аватары, и я хочу сохранить этот путь к файлу на диске, где находится это изображение.

[HttpPost]
public ActionResult ChangePicture(HttpPostedFileBase file)
{
    using (EFJugadorRepository jugadorRepository = new EFJugadorRepository())
    {
        var jugador = jugadorRepository.FindJugadorByEmail(User.Identity.Name);

        if (file != null && file.ContentLength > 0)
        {

            var extension = Path.GetExtension(file.FileName);
            string fileName = String.Format("{0}{1}", User.Identity.Name, extension);

            var path = Path.Combine(Server.MapPath("~/Public/Avatars"), fileName);
            file.SaveAs(path);

            using (EFFotografiaRepository fotografiaRepository = new EFFotografiaRepository())
            {
                var fotografia = fotografiaRepository.FindAllFotografias().SingleOrDefault(f => f.fotCodigo == jugador.jugCodigo);
                if (fotografia == null)
                {
                    fotografia = new taFotografia();
                    fotografiaRepository.CreateNewFotografia(fotografia);
                }

                fotografia.fotCodigo = (int)jugador.jugCodigo;
                fotografia.fotTipo = 0;


                //string relativeRootPath = Url.Content("~/Public/Avatars");
                string relativeRootPath = "http://localhost:23188/Public/Avatars";
                fotografia.fotUrl = String.Format("{0}/{1}", relativeRootPath, fileName);
                fotografiaRepository.SaveChanges();

                jugador.jugFoto = fotografia.fotCodigo;
                jugadorRepository.SaveChanges();
            }
        }

        // redirect back to the index action to show the form once again
        return RedirectToAction("CropPicture");
    }
}

Если вы заметили, я закомментировал строку:

string relativeRootPath = Url.Content("~/Public/Avatars");`

Это не сработало, понятно;и мне пришлось вручную ввести URI "localhost".

Есть ли способ получить корневой URI и использовать его для сохранения пути?Или есть лучший способ?

1 Ответ

0 голосов
/ 22 ноября 2011

Попробуйте это:

string path1 = HttpContext.Current.Request.ApplicationPath;
string realPath = HttpContext.Current.Request.MapPath(path1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...