2016-04-27 90 views
1

目前我运行一个MVC 5项目与网页API我在哪里采用了棱角分明的js调用Ajax火的网络API方法,并得到图片的路径,但是当我设置在IMG标记,路径,使图像不显示和在Chrome控制台消息显示不能加载本地资源。不允许加载本地资源

下面是我公司通过AJAX调用Web API方法的代码

[Route("Files")] 
 
     public List<FilesInfo> GetImages() 
 
     { 
 
rootPath = HostingEnvironment.MapPath("~/Content/Images/"); 
 
      List<FilesInfo> files = new List<FilesInfo>(); 
 
    
 
      foreach (var item in Directory.GetFiles(rootPath)) 
 
      { 
 
       FileInfo f = new FileInfo(item); 
 
       files.Add(new FilesInfo(){FileName=f.Name, FilePath=rootPath+f.Name}); 
 
      } 
 

 
      return files; 
 
      
 
     }

请让我知道如果您有任何疑问。

回答

1

看来HostingEnvironment.MapPathreturns the physical path在服务器上。 当你加入这个路径,你imgsrc属性,浏览器会抱怨无法将本地当地资源。

你需要的路径调整到图像是相对于你的网站:/img/img1.jpg

尝试:

[Route("Files")] 
public List<FilesInfo> GetImages() 
{ 
    rootPath = "/Content/Images/"; 
    List<FilesInfo> files = new List<FilesInfo>(); 

    foreach (var item in Directory.GetFiles(HostingEnvironment.MapPath("~"+ rootPath);)) 
    { 
     FileInfo f = new FileInfo(item); 
     files.Add(new FilesInfo() { FileName = f.Name, FilePath = rootPath + f.Name }); 
    } 

    return files; 

} 

这样System.IO.FileInfo应具备的地方路径,您FilesInfo应该有相对URL路径,您可以用角用来创建:<img ng-src="{{vm.file.filePath}}" alt="{{vm.file.fileName}}" />

+0

嗨布鲁诺,感谢您的答复。但我没有太多,你可以探索更多?目前我的图像位于项目内容>内容>图像> image1.jpg。谢谢。 – Vikash

+0

你'FilesInfo.FilePath'不应该包含C:\ some \ path。它必须包含由Web服务器提供的图像的路径:(mysite.com)/Content/image1.jpg基本上,您应该可以将此URL添加到浏览器的导航栏并查看图像。 –

+0

我在这里改变了,但仍然有问题。 foreach(Directory.GetFiles(rootPath)中的var项) { FileInfo f = new FileInfo(item); files.Add(new FilesInfo(){FileName = f.Name,FilePath = f.DirectoryName + f.Name}); } – Vikash

相关问题