У меня есть меню, где пользователи могут загружать свои аватары, и я хочу сохранить этот путь к файлу на диске, где находится это изображение.
[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 и использовать его для сохранения пути?Или есть лучший способ?