2013-08-23 4 views
0

привет, я делаю проект в MVC4 с помощью C#. В моем проекте я сохраняю некоторые данные о группе лиц в базе данных с уникальным идентификатором. Также также сохраняю изображение профиля конкретного человека в папке в моем проекте. (Идентификационный номер и имя pic - то же самое). В виду я хочу показать все эти детали. Проблема находится в изображениях. Я использую следующие кодыПоиск и извлечение изображения из папки

Просмотр

@foreach(var item in Model) 
    { 
     <td><img src="@Url.Action("ImageRetrive", "Member", new {imgname=(item.Id)})" /><br />Rtn. @item.Mem_NA<br />(@item.Mem_Occ)</td> 
    } 

Контроллер

public string ImageRetrive(int imgname) 
    { 
     string keyword=image.ToString(); 
     string imagefolderpath = Server.MapPath("~/Content/Member/MemberPhotos"); 
     string currentimage = new Member().GetImage(imagefolderpath,keyword); 
     string fullpath = "~/Content/Member/MemberPhotos/" + currentimage; 
     return fullpath; 

    } 

модель

public string GetImage(string path,string keyword) 
    { 
     DirectoryInfo di = new DirectoryInfo(path); 
     FileInfo[] images = di.GetFiles(); 
     foreach (FileInfo image in images) 
     { 
      var name = image.Name; 
      if (name.Contains(keyword)) 
      { 
       imgname = name; 
      } 
     } 
     return imgname; 
    } 

Но я д idnot получить какой-либо выход. в контроллере переменная fullpath дает ссылку. но это может занять. Пожалуйста, помогите мне.

+0

Почему бы вам не настроить полный путь к папке сервера в web.config и использовать его для получения изображения –

+0

Поскольку Directory.GetFiles (путь) должен иметь полный путь. –

+0

image.ToString(); как имя файла? где расширение? –

ответ

1

Я думаю, что вам нужно FilePathResult, изменить код контроллера в

public FilePathResult ImageRetrive(int imgname) 
{ 
    string keyword=image.ToString(); 
    string imagefolderpath = Server.MapPath("~/Content/Member/MemberPhotos"); 
    string currentimage = new Member().GetImage(imagefolderpath,keyword); 
    string fullpath = "~/Content/Member/MemberPhotos/" + currentimage; 

    return File(fullpath, "image/png"); //Changed here 
} 

или Вы можете использовать FileContentResult

public FileContentResult Retrive(int imgname) 
{ 
    return File(ConvertToByteArray(YourFile), "image/png"); //Changed here 
} 
+0

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

1

На ваш взгляд, вы передаете imgname в качестве параметра, а в вашем контроллере вы получите image.

Контроллер

public string ImageRetrive(int imgname){ } 

Изменить путь возврата

return File(fullpath, "text/plain"); 
+0

. но теперь проблема в том, что модель возвращает только имя файла (обычно я этого хочу). Но «currentimage» в контроллере показывает полный путь. в чем проблема, существует – neel

+0

, а также отсутствует расширение файла – neel

+0

Простой обратный текущий образ вместо полного пути –

Смежные вопросы