Directory.GetFiles路径问题

时间:2019-03-26 16:21:33

标签: c# asp.net

我一直将Confid.VirtualDir用于我的路径。例如:

Config.VirtualDir + "upload/gallery/image.jpg"

这为我提供了 /upload/gallery/image.jpg 的路径。例如,在每个页面上的效果都很好:

<img style="height: 100px; " src="<%=Config.VirtualDir + "upload/gallery/image.jpg" %>" />

工作正常。

但是,现在我遇到了 Directory.GetFiles

它适用于:

protected string[] images;
images = Directory.GetFiles(@"C:\website\mysite.com\upload\gallery", "*.jpg");

但不是:

protected string[] images;
string path = Config.VirtualDir + "upload/gallery";
images = Directory.GetFiles(path,"*.jpg");

我在控制台中看不到任何错误。

我也尝试过"upload\gallery",但收到错误消息“无法识别转义序列”。

使用@"C:\website\mysite.com\upload\gallery"将公开服务器的目录结构,我希望避免这种情况。

  

更新:基于 Alex K。的建议。我尝试过:

protected string[] images;
protected string realImage;
    string path = Server.MapPath(@"~\upload\Gallery");
    images = Directory.GetFiles(path, "*.jpg");
    realImage = Path.Combine(Server.MapPath(@"~\upload\Gallery"), Config.VirtualDir + "upload/Gallery");

现在,我很困惑如何使用 GetFiles 的路径和realImage路径来获取我的图像。

  

UPDATE2 :可以使用。感谢 Alex K 。我在下面回答

1 个答案:

答案 0 :(得分:0)

评论说明:

代码文件:

       public List<string> images = new List<string>();
        protected string realPath;
        protected void Page_Load(object sender, EventArgs e)
        {
            string path = Server.MapPath(@"~\upload\Gallery"); 
            // this gets the actual directory path.
            realPath = Path.Combine(path, Config.VirtualDir + "upload/Gallery/");
            //this changes the path to the VirtualDir path
            DirectoryInfo di = new DirectoryInfo(path);
            //this gets file names in the folder
            foreach(var fi in di.GetFiles())
            {
                images.Add(fi.Name);
                //adds file names to images list
            }
        }

HTML:

    <img style="height: 100px; " src="<%=realPath + images[0]%>" />
    //any images[i] is accessible