从服务器端文件夹中检索所有文件

时间:2015-02-19 12:10:18

标签: c# asp.net file

我有以下C#方法检索文件夹中的所有文件,并在asp.net应用程序中使用,并通过JavaScript进行AJAX调用来调用:

    public string GetSoundFile(string pSoundFolder)
    {
        string[] pFiles = Directory.GetFiles(pSoundFolder);

        string pFileList = "";

        for (int ii = 0; ii < pFiles.Length; ii++)
        {
            if (pFileList == "")
            {
                pFileList = pFiles[ii];
            }
            else
            {
                pFileList += "|" + pFiles[ii];
            }
        }

        return (pFileList);
    }

并通过执行以下操作来调用:

oGetSoundFilesJAXHandler.call("C:\\Projects\\");

据我所知,行

string[] pFiles = Directory.GetFiles(pSoundFolder);

用于本地文件?

应用程序将在客户端运行,需要访问服务器端文件夹。如果我是正确的,那么我的方法无法适应我需要的任务。

我试过了:

        oGetSoundFilesJAXHandler.call("~//Projects//");

但这不会返回文件列表。

我试图寻找实现目标的方法,但我找不到任何东西。也许我没有在我的搜索中使用正确的关键字,所以即使是关键字提示也会非常感激。

3 个答案:

答案 0 :(得分:4)

您可以使用以下代码简化此操作。

public string GetSoundFile()
{
    var files = Directory.GetFiles(HttpContext.Current.Server.MapPath("~/sounds"));
    return String.Join("|",files);
}

答案 1 :(得分:0)

如果您的函数调用“oGetSoundFilesJAXHandler.call”正在服务器上执行,那么它将能够获取详细信息。 但是,如果此功能在本地计算机上运行,​​那么这将无效。

要实现此目的,您要在服务器上访问的文件夹应与您共享,并且应提供使用服务器IP地址的路径以便访问它。

只需将客户端访问服务器文件夹即可。

答案 2 :(得分:0)

我自己找到了答案。

我需要使用

 public string GetSoundFile()
    {
        string WorkingDirectory = HttpContext.Current.Server.MapPath("~/sounds");                    

        string[] pFiles = Directory.GetFiles(WorkingDirectory);

        string pFileList = "";

        for (int ii = 0; ii < pFiles.Length; ii++)
        {
            if (pFileList == "")
            {
                pFileList = pFiles[ii];
            }
            else
            {
                pFileList += "|" + pFiles[ii];
            }
        }

        return (pFileList);
    }

我需要使用:

HttpContext.Current.Server.MapPath("~/sounds");

正确传入文件夹。

由于文件夹没有改变,我将它直接添加到方法中,但可以很容易地将其作为字符串传递。