【问题标题】:Web API returning list of files from folder via JSONWeb API 通过 JSON 从文件夹返回文件列表
【发布时间】:2014-09-23 11:50:46
【问题描述】:

我正在尝试获取特定文件夹中 jpg 文件的列表,并通过 json 将该列表返回到角度引导轮播。如果我以 json 格式对文件列表进行硬编码并手动将其放在范围内,则角度引导部分工作正常,但我无法弄清楚如何从这个 web api 控制器以正确的格式返回数据。问题主要出在我相信的 foreach 循环上。我用@符号、双引号、单引号等尝试了各种方法。我肯定被困在这一点上。谢谢。

[Route("api/GetIncidentPhotos/{Id}/Incidents")]
public IEnumerable<string> GetIncidentPhotos(int Id)
{ 
    List<string> files = new List<string>();
    DirectoryInfo dirInfo = new DirectoryInfo(@"C:\SecurityManager\Photos\3\");

    foreach (FileInfo fInfo in dirInfo.GetFiles())
    {
        files.Add("{ 'path:' + '\\Photos\\3\\' + fInfo.Name + '}' ");            
    }

    return files.ToList();

}

这里是 html/bootstrap/angular 标记,它使用从 API 调用返回的文件列表来构建图像轮播。

<div class="carousel-inner">
    <div class="item" ng-class="{active:!$index}" ng-repeat="photo in photoPath">            
        <img src="{{ photo.path }}" class="img-responsive" style="border: solid 1px;">
    </div>
</div>

【问题讨论】:

    标签: asp.net-web-api


    【解决方案1】:

    首先,为路径对象使用模型类,这样您就不必依赖手动序列化为 JSON。

     [Route("api/GetIncidentPhotos/{Id}/Incidents")]
        public IEnumerable<FilePath> GetIncidentPhotos(int Id)
        {
            List<FilePath> files = new List<FilePath>();
            DirectoryInfo dirInfo = new DirectoryInfo(@"C:\SecurityManager\Photos\3\");
    
            foreach (FileInfo fInfo in dirInfo.GetFiles())
            {
                files.Add(new FilePath(){ path = @"\Photos\3\" + fInfo.Name});      
            }
    
            return files.ToList();
        }
        public class FilePath
        {
            public string path { get; set; }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-02
      • 1970-01-01
      • 2018-07-17
      • 2014-01-04
      • 2013-03-21
      • 1970-01-01
      • 2016-04-23
      • 2015-07-09
      相关资源
      最近更新 更多