需要下载web server某些文件夹内的所有文件,但不知道文件名(类型为XML和JPG),文件夹名可知
选用httpwebrequest/httpwebresponse或webrequest/webresponse之类的应该怎么处理那?或者说怎么获得文件夹内的文件名? string urlBase = "http://www40.brinkster.com";
string filesFolderUrl = urlBase + "/nyinyithann/newsfeed/images" HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(filesFolderUrl);
HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();当filesFolderUrl为文件夹时,httpWebRequest.GetResponse()会报403forbidden错误。在 http://forums.asp.net/p/1162906/1928791.aspx#1928791 上的代码也没调成功,用到了正则表达式。高手请指教。
组件在下载过程可以断点续传··比较复杂
不是合法的路径啊。这个需要服务器端编程,对这个请求进行响应。不然你是访问不了的。你在服务器端实现下载这些文件的功能才行,不然没辙。
例:
1 testFolder 文件夹 0 d:\………\testFolder
2 testFile 文件 10002345 d:\………\test.JPG
然后通过配置文件把用户请求的web path转换为server上的物理路径,找到文件后,再用URL转向拼成一个加密的url,例如
http://www.test.com/……/10101111011101110.tst
ftp://www.test.com/……/101101010101010.tst
给用户提供下载即可。
{
FtpListFile("ftp://yourftpaddress", new NetworkCredential("user", "pwd"));
} void FtpListFile(string ftp, ICredentials cred)
{
FtpWebRequest req = (FtpWebRequest)WebRequest.Create(ftp);
if (cred != null)
req.Credentials = cred;
req.KeepAlive = false;
req.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
FtpWebResponse rep = (FtpWebResponse)req.GetResponse();
using (StreamReader sr = new StreamReader(rep.GetResponseStream()))
{
while (true)
{
string line = sr.ReadLine();
if (line == null)
break;
string[] words = line.Split(' ');
//最后一个 string 就是ftp目录下的文件名和子目录名称
Console.WriteLine(words[words.Length-1]);
}
}
rep.Close();
}
2、通过虚拟目录获得对应的物理路径,通过MapPath获得file的路径,然后实例化一个FileInfo对象
3、通过该FileInfo对象获得该文件对应的目录DirectoryInfo对象
4、通过DirectoryInfo对象通过GetFiles获得该目录下的所有文件FileInfo[]
5、通过前面的虚拟目录和现在获得的文件列表下载即可