使用选择器获取带有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)); } }
当然,我们可以通过多种方式设置树形视图的样式。