早上看到BBS上有这个贴子,"知道文件夹的路径 怎么把那个文件夹里的全部图片copy下来"
看到这样一个命题,首先想到是如何获取该路径下的全部的目录结构.我们有IE里有时是可以看到某个站点的目录结构的.如FTP不就是这样一个例子吗.首先该站点要支持目录浏览的功能.如果已关闭这个功能,那我暂时也想不出办法.
HTTP里我们常用get,post或head方法来获取站点的文件或相关信息.而这些对于上述要求是做不到的.这里使用了"PROPFIND"方法来实现该需求.有兴趣的话可以了解一下相关的资料.
话不多说了.直接上代码.
public class Resource<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
{
public string Name;
public bool IsFolder;
public string Url;
public DateTime LastModified;
}
public static SortedList GetDirectoryContents(string url, bool deep)
{
//Retrieve the File
HttpWebRequest Request = (HttpWebRequest)HttpWebRequest.Create(url);
Request.Headers.Add("Translate: f");
Request.Credentials = CredentialCache.DefaultCredentials;
string requestString = "<?xml version=/"1.0/" encoding=/"utf-8/" ?>" +
"<a:propfind xmlns:a=/"DAV:/">" +
"<a:prop>" +
"<a:displayname/>" +
"<a:iscollection/>" +
"<a:getlastmodified/>" +
"</a:prop>" +
"</a:propfind>";
Request.Method = "PROPFIND";
if (deep == true)
Request.Headers.Add("Depth: infinity");
else
Request.Headers.Add("Depth: 1");
Request.ContentLength = requestString.Length;
Request.ContentType = "text/xml";
Stream requestStream = Request.GetRequestStream();
requestStream.Write(Encoding.ASCII.GetBytes(requestString), 0, Encoding.ASCII.GetBytes(requestString).Length);
requestStream.Close();
HttpWebResponse Response;
StreamReader respStream;
try
{
Response = (HttpWebResponse)Request.GetResponse();
respStream = new StreamReader(Response.GetResponseStream());
}
catch (WebException e)
{
Debug.WriteLine("错误" + url);
throw e;
}
StringBuilder SB = new StringBuilder();
char[] respChar = new char[1024];
int BytesRead = 0;
BytesRead = respStream.Read(respChar, 0, 1024);
while (BytesRead > 0)
{
SB.Append(respChar, 0, BytesRead);
BytesRead = respStream.Read(respChar, 0, 1024);
}
respStream.Close();
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.LoadXml(SB.ToString());
XmlNamespaceManager nsmgr = new XmlNamespaceManager(XmlDoc.NameTable);
nsmgr.AddNamespace("a", "DAV:");
XmlNodeList NameList = XmlDoc.SelectNodes("//a:prop/a:displayname", nsmgr);
XmlNodeList isFolderList = XmlDoc.SelectNodes("//a:prop/a:iscollection", nsmgr);
XmlNodeList LastModList = XmlDoc.SelectNodes("//a:prop/a:getlastmodified", nsmgr);
XmlNodeList HrefList = XmlDoc.SelectNodes("//a:href", nsmgr);
SortedList ResourceList = new SortedList();
Resource tempResource;
for (int i = 0; i < NameList.Count; i++)
{
if (HrefList[i].InnerText.ToLower(new CultureInfo("en-US")).TrimEnd(new char[] { '/' }) != url.ToLower(new CultureInfo("en-US")).TrimEnd(new char[] { '/' }))
{
tempResource = new Resource();
tempResource.Name = NameList[i].InnerText;
tempResource.IsFolder = Convert.ToBoolean(Convert.ToInt32(isFolderList[i].InnerText));
tempResource.Url = HrefList[i].InnerText;
tempResource.LastModified = Convert.ToDateTime(LastModList[i].InnerText);
ResourceList.Add(tempResource.Url, tempResource);
}
}
return ResourceList;
}
主要利用了WebDAV 的功能来实现.请把站点的目录浏览权限给打开,使用时调用上面的方法即可获取相关的信息.如果想下载的话,那可以根据获取的URL再次进行下载.
分享到:
相关推荐
C# 获取文件路径:WEB,控制台,winform获取文件路径。
C# 获取本地计算机所有共享文件和路径源码 快快快快快快快快快快快快快快快快快快快快快快快快快快快快快快快快快快快快快快
一个比较完善的C#获取指定文件夹下的所有文件夹的demo,希望大家用的着!
C#获取文件名称、文件大小以及所在路径、修改日期、创建日期等信息,与文件操作紧密相关的一个实例,为获取文件属性提供范例,你可根据程序代码中的格式继续获取更多的文件属性信息。
C# 获得文件路径信息C# 获得文件路径信息C# 获得文件路径信息C# 获得文件路径信息C# 获得文件路径信息
C#取得当前文 件夹下全部文件 路径或文件名 具体自己参看
C#获取当前路径
其中包含八种获取相对路径的方法。... 获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。 string str = System. Windows .Forms.Application.StartupPath; Result: C:\xxx\xxx
c# 获取相对路径,操作环境变量. 一、获取当前文件的路径 1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName 获取模块的完整路径,包括文件名。 2. System.Environment.CurrentDirectory ...
vs 2008 平台 简单显示当某目录下所有文件的文件路径或文件名称
获取指定程序的运行路径,前段时间项目中要用到该功能,网上很多都是获取当前程序的运行路径,最后找了很久才找到类似的代码,修改了传上来共享下,帮助需要的人
C#获取相对路径的方法,包括获取和设置当前目录的完全限定路径、获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称等等内容。
CS、BS 获取文件路径及读取文件内容的示例代码
还有一个获取文件名的测试程序(电脑需要安装了.net framework 2.0才能正常运行),打开程序,填写路径,按“获取”之后就能得到文件名。 这个小工具我是安装opencv添加dll库文件太麻烦而开发出来的,各文件名间用...
这个程序是一个使用 C# 编写的控制台应用程序,它通过用户输入文件夹路径,读取该路径下所有名称中包含 "自定" 的 Excel 文件。然后,程序在这些 Excel 文件中查找包含 "需要数据" 的单元格,并输出该单元格的位置和...
可以完成拖入文件获取路径,C#源代码,可以拖入文件夹、文件等
1、编写获取文件名(全路径)子函数 /////param ///path:文件夹路径 ///suffix:后缀格式, 如bmp,txt ///fileList:文件名存放 ///isSubcatalog:true遍历子文件夹,否则不遍历 void getFiles(string path, string...
C# 获取指定文件的基本信息C# 获取指定文件的基本信息
C#获取视频文件信息及视频转码操作,补充之前的压缩分卷的不完整,此为完整版
C# 获取文件属性C# 获取文件属性C# 获取文件属性C# 获取文件属性C# 获取文件属性C# 获取文件属性C# 获取文件属性