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

时间:2020-03-06 14:52:32  来源:igfitidea点击:

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

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

解决方案

没有。没有也就是说,我们可以使用列表框,然后将文件加载到其中。

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

我们无法以与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));
        }
    }

当然,我们可以通过多种方式设置树形视图的样式。