2016-05-19 8 views
0

У меня есть функция загрузки в ASP.NET MVC 4.5.2 как загрузить изображение в ~/Uploads /.Заменить абсолютный на относительный путь в asp.net

Когда я хочу, чтобы отобразить изображение с помощью следующего кода:

<img src="@item.ImagePath" alt="Image" /> 

я получаю:

<img src="c:\users\yanni\documents\visual studio 2015\Projects\MyProject\MyProject\Uploads/references/postfinance.PNG" alt="Image" /> 

Мой вопрос должен знать, как я могу заменить C: \ Users ... на «~ /Uploads/filename.ext».

Может быть, это важно указать: в моей базе данных, я имею полное соединение: C: \ Users \ Yanni \ документы \ визуально студии 2015 \ Projects \ MyProject \ MyProject \ Закачивает/ссылки/postfinance.PNG

на который ссылается эта ControllerCode:

references.ImagePath = HttpContext.Request.PhysicalApplicationPath + "Uploads/references/" + ImagePath.FileName; 
ImagePath.SaveAs(references.ImagePath); 

Спасибо за заранее за вашу помощь

ответ

0

Решение основано:

public ActionResult Create([Bind(Include = "ID,Compagny,Website,Logo")] References references, HttpPostedFileBase ImagePath) 
     { 
      if (ModelState.IsValid) 
      { 
       var fileName = Path.GetFileName(ImagePath.FileName); 
       references.ImagePath = "/Uploads/References/" + fileName; 
       ImagePath.SaveAs(Server.MapPath("~/Uploads/References/" + fileName)); 

       db.References.Add(references); 
       db.SaveChanges(); 
       return RedirectToAction("Index"); 
      } 

      return View(references); 
     } 
0

Я действительно не понимаю, почему вы говорите, что вы загрузить в «~/Добавленные», но позже вы храните ImagePath как «загрузки/ссылки/... ». Почему вы добавляете этот каталог? Вы перемещаете этот файл там?

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

var fileName = "~/Uploads/" + ImagePath.FileName; 
references.ImagePath = fileName; 

И если вы когда-нибудь понадобится абсолютный путь к изображению на сервере (который зависит от того, где ваш проект находится на сервере), вы можете получить его в контроллер с помощью

var realPath = Server.MapPath(fileName); 

Благодаря этому подход будет этот код:

<img src="@item.ImagePath" alt="Image" /> 

воздавать:

<img src="~/Uploads/postfinance.PNG" alt="Image" /> 

Что, вероятно, что вы хотите ...

+0

благодарит за ваш ответ. С кодом (первым), я получаю эту ошибку: Дополнительная информация: Метод SaveAs настроен на необходимость связанного с ним пути к корню, а путь ~/Uploads/postfinance.PNG 'не связан с корень. –

1

Попробуйте что-то вроде этого:

<img src="@Url.Content("~/Uploads/Image.png")" /> 

Если вы хотите изображение быть извлечена в соответствии с током запросить

<img src="@Url.Content("~/Uploads/" + FileName)" /> 

где имя файла это не что иное, как название изображения или

<img src="@Url.Content("~/Uploads/" + System.IO.Path.GetFileName(@item.ImagePath))" />