使用选择器获取ASP.NET服务器上的文件列表

时间:2008-09-29 14:10:10

标签: asp.net

是否有可用的组件列表FileUpload,它显示服务器上的文件,而不是客户端?

我基本上是在寻找一个干净的对话框来选择服务器端文件,比如FileUpload中使用的文件。

2 个答案:

答案 0 :(得分:1)

不。没有。也就是说,您可以使用列表框,并将文件加载到其中。

public sub file_DatabindListbox(directoryPath as string)
   for each fName as string in io.directory(directorypath).getfilenames()
     dim li as new listitem 
     li.text = io.path.getfilename(fName)
     li.value = fName
     myFileListbox.Items.Add(li)
   next
end sub 

答案 1 :(得分:0)

您无法以与使用FileUpload组件相同的方式浏览服务器的文件夹,因为......所有文件都位于服务器上,您所指的“干净对话框”是客户端。您可以编写自己的代码来列出下拉列表中的文件。但是如果你的文件位于多个文件夹中并且你想保留一些结构,那么TreeView可能会做这样的事情:

protected void Page_Load(object sender, EventArgs e)
{
        SetChildFolders(trvFiles.Nodes, @"C:\MyFolder");
}

    private void SetChildFolders(TreeNodeCollection nodes, string path)
    {
        foreach (string directory in Directory.GetDirectories(path))
        {
            DirectoryInfo dirInfo = new DirectoryInfo(directory);
            TreeNode node = new TreeNode(dirInfo.Name, dirInfo.FullName);

            SetChildFolders(node.ChildNodes, dirInfo.FullName);
            SetChildFiles(node.ChildNodes, dirInfo.FullName);

            trvFiles.Nodes.Add(node);
        }
    }

    private void SetChildFiles(TreeNodeCollection nodes, string path)
    {
        foreach (string file in Directory.GetFiles(path))
        {
            FileInfo fileInfo = new FileInfo(file);
            nodes.Add(new TreeNode(fileInfo.Name, fileInfo.FullName));
        }
    }

你可以通过很多方式对树视图进行风格化。