ASP.NET加载FTP下的文件
来源:互联网 发布:淘宝app流量软件 编辑:程序博客网 时间:2024/06/05 07:49
最近接触ASP.NET,自己编一个小网站,需要到FTP站点上下载文件,于是我就想将FTP上的文件加载到aspx页面上,与加载本地文件不同的是,需要使用FTP相关的操作类。
以本地FTP服务器为例:
前端代码:
首先,在页面上插入一个TreeView控件,FTP中的文件信息将通过递归的方式导入到TreeView控件上并显示出来;
<asp:TreeView ID="FTPfileTreeView" runat="server" Height="600%" ImageSet="XPFileExplorer" NodeIndent="15" Width="331px" ExpandDepth="1" BackColor="#66FF99" ShowLines="True"> <HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" /> <NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black" HorizontalPadding="2px" NodeSpacing="0px" VerticalPadding="2px" /> <ParentNodeStyle Font-Bold="False" /> <SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False" HorizontalPadding="0px" VerticalPadding="0px" /> </asp:TreeView>
后台代码:
1.加载文件夹方法:
private void paintFtpFileTreeview(TreeView treeView, string fullPath) { try { //清空TreeView treeView.Nodes.Clear(); //遍历ftp上的文件信息 string[] fullname = FtpHelper.ftp(fullPath, null, WebRequestMethods.Ftp.ListDirectoryDetails); for (int i = 0; i < fullname.Length - 1; i++) { string names = fullname[i]; //判断是否具有文件夹标识<DIR> if (names.Contains("<DIR>")) { string olname = names.Split(new string[] { "<DIR>" }, StringSplitOptions.None)[1].Trim(); TreeNode node = new TreeNode(olname); node.Text = olname; node.Value = fullPath + olname; node.ShowCheckBox = true;//文件夹添加选择框,便于后面下载 node.Target = "view";//框架名 node.NavigateUrl = fullPath + @"/" + olname;//设置节点的地址,可直接打开 treeView.Nodes.Add(node); GetFtpMultiNode(treeView.Nodes[i], fullPath + @"/" + olname);//加载子节点的文件信息 } else { string onlynames = fullname[i]; if (onlynames == "" || onlynames == " " || names == "") { Response.Write("<script>alert('查询异常:FTP为空!');</script>"); break; } else { if (names.Contains(" " + onlynames)) { TreeNode node = new TreeNode(onlynames); node.Text = onlynames; node.NavigateUrl = fullname + @"/" + onlynames; node.Target = "_blank";//框架名 treeView.Nodes.Add(node); } } } } } catch (Exception ex) { Response.Write(ex.Message); } }2.加载子节点
/// <summary> /// 加载文件夹下子节点的信息 /// </summary> /// <param name="treeNode"></param> /// <param name="fullPath"></param> private void GetFtpMultiNode(TreeNode treeNode, string fullPath) { try { string[] fullname = FtpHelper.ftp(fullPath, null, WebRequestMethods.Ftp.ListDirectoryDetails); for (int i = 0; i < fullname.Length - 1; i++) { string names = fullname[i]; //判断是否具有文件夹标识<DIR> if (names.Contains("<DIR>")) { string olname = names.Split(new string[] { "<DIR>" }, StringSplitOptions.None)[1].Trim(); TreeNode node = new TreeNode(olname); node.Text = olname; node.Value = fullPath + olname; node.NavigateUrl = fullPath + @"/" + olname; node.Target = "view"; node.ShowCheckBox = true; treeNode.ChildNodes.Add(node); GetFtpMultiNode(treeNode.ChildNodes[i], fullPath + @"/" + olname); } else { string onlynames = fullname[i]; if (onlynames == "" || onlynames == " " || names == "") { Response.Write("<script>alert('查询异常:FTP为空!');</script>"); break; } else { onlynames = names.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)[3].Trim(); if (names.Contains(" " + onlynames)) { TreeNode node = new TreeNode(onlynames); node.Text = onlynames; node.NavigateUrl = fullPath + @"/" + onlynames; node.Target = "_blank"; treeNode.ChildNodes.Add(node); } } } } } catch (Exception ex) { Response.Write(ex.Message ); } }3.遍历FTP文件信息方法
///<summary> ///遍历文件夹 /// </summary> /// <param name="ftpads">FTP地址路径</param> /// <param name="name">我们所选择的文件或者文件夹名字</param> /// <param name="type">要发送到FTP服务器的命令</param> /// <returns></returns> public static string[] ftp(string ftpads, string name, string type) { WebResponse webresp = null; StreamReader ftpFileListReader = null; FtpWebRequest ftpRequest = null; try { ftpRequest = (FtpWebRequest)WebRequest.Create(new Uri(ftpads + name)); ftpRequest.Method = type; webresp = ftpRequest.GetResponse(); ftpFileListReader = new StreamReader(webresp.GetResponseStream(), Encoding.UTF8); } catch (Exception ex) { MyLog.writeLOG("获取文件列表异常:" + ex.Message); MyLog.writeToErr("获取文件列表异常:" + ex.Message); } StringBuilder str = new StringBuilder(); string line = ftpFileListReader.ReadLine(); while (line != null) { str.Append(line); str.Append("|"); line = ftpFileListReader.ReadLine(); } string[] fen = str.ToString().Split('|'); return fen; }
最后在Page_Load中添加加载方法:
const string ftpPath = "ftp://127.0.0.1/"; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { paintFtpFileTreeview(FTPfileTreeView, ftpPath); } }编译之后可以看出,成功加载了FTP上的文件信息:
此时点击文件,可以查看基本的文件信息,因为FTP主要是txt文件,所以没有试过其他格式的文件:
阅读全文
1 0
- ASP.NET加载FTP下的文件
- asp.net项目无法加载web目录下的文件
- 利用ASP.NET设计FTP文件上传(下)
- 利用ASP.NET设计FTP文件上传(下)
- ASP.NET实现FTP文件上载类
- 利用ASP.NET设计FTP文件上传
- 利用ASP.NET设计FTP文件上传
- 利用ASP.NET设计FTP文件上传
- ASP.NET实现FTP文件上载类
- 利用ASP.NET设计FTP文件上传
- Asp.net 通过Ftp上传文件
- 利用ASP.NET设计FTP文件上传
- ASP.NET 使用FTP上传文件
- ASP.NET如何实现FTP上传文件
- .NET下的FTP上传,下载文件(支持中文名)
- .NET下的FTP上传、下载文件操作类[收藏]
- .NET下的FTP上传,下载文件(支持中文名)
- .NET下的FTP上传,下载文件(支持中文名)
- Android Launcher 专属页和生活页的实现(一)
- 第一次博客,从0开始
- Kafka消息生成,消费,存储机制
- 编写一个mysleep函数
- leetcode 347. Top K Frequent Elements
- ASP.NET加载FTP下的文件
- iptables:应用防火墙规则:ptables-restore: line 1failed [失败]
- Windows Server 2012 网络负载均衡(NLB)
- 爬虫过程中关于IP被封与反扒的策略
- grep的一些用法
- 使用Python求解数独
- css selector
- HBase连接池 -- HTablePool被Deprecated以及可能原因是什么
- 文章标题