我有以下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//");
但这不会返回文件列表。
我试图寻找实现目标的方法,但我找不到任何东西。也许我没有在我的搜索中使用正确的关键字,所以即使是关键字提示也会非常感激。
答案 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");
正确传入文件夹。
由于文件夹没有改变,我将它直接添加到方法中,但可以很容易地将其作为字符串传递。