【问题标题】:Searching and Retriving image from a folder从文件夹中搜索和检索图像
【发布时间】:2013-08-23 16:09:51
【问题描述】:

嗨,我正在使用 c# 在 MVC4 中做一个项目。 在我的项目中,我将一些具有唯一 ID 的人员详细信息存储在数据库中。并且还将特定人员的个人资料图片存储在我项目的文件夹中。(ID 编号和图片名称相同)。 在视图中我想显示所有这些细节。问题在图像中。我使用以下代码

查看

   @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;
    }

但我没有得到任何输出。在控制器中,变量 fullpath 给出了链接。但它可以接受。请帮帮我。

【问题讨论】:

  • 为什么不在web.config中配置服务器位置的完整路径并使用它来检索图像
  • 因为 Directory.GetFiles(path) 需要有完整的路径。
  • image.ToString();作为文件名?扩展在哪里?
  • @Na Na:我想要没有扩展的 serach。如果字符串在文件名中,我想显示它

标签: c# html asp.net-mvc-4


【解决方案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
}

【讨论】:

  • 感谢它的工作。我还有一个疑问,如果在我的文件夹中是 jpg 和 png 图像,那么我如何返回文件。
【解决方案2】:

在您的视图中,您将imgname 作为参数传递,而在您的控制器中,您将获得image

控制器

public string ImageRetrive(int imgname){ }

更改返回路径

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

【讨论】:

  • 成功了。但现在的问题是模型只返回文件名(实际上我想要那个)。但是控制器中的“currentimage”显示了完整路径。有什么问题
  • 文件扩展名也不见了
  • 简单返回当前图像而不是完整路径
  • 这不起作用。实际上它显示了类似“c://....”的路径,我需要 ~/Content/Member/MemberPhotos/imagename.jpg/png
猜你喜欢
  • 2021-11-03
  • 2017-10-07
  • 2015-01-15
  • 2012-10-06
  • 2017-05-06
  • 2019-12-08
  • 2017-07-18
  • 1970-01-01
相关资源
最近更新 更多