0

c#を使用してディレクトリブラウジングを有効にしたURLパスから「*.zip」を含むファイルを検索する方法。例:私のURLがhttp://www.example.com/myfolder/myfiles で、パスがファイルで構成されている場合:ex1.htm、ex2.zip、ex.pdf、ex.swfでは、どうすれば見つけることができますか拡張子が*.zipのファイル名。URLでzipファイルのファイル名を見つける方法を教えてください

4

4 に答える 4

1

FTPサーバーも利用できない場合は、を使用してディレクトリリストをロードしHttpWebRequest、結果を解析して<A>タグ内のすべてのhrefを引き出す必要があると思います。

サンプルコードは次のとおりです。

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        {
            using (StreamReader reader = new StreamReader(response.GetResponseStream()))
            {
                string html = reader.ReadToEnd();
                Console.WriteLine("Parsing {0}", html);
                Regex regex = new Regex("href=\\\"([^\\\"]*)", RegexOptions.IgnoreCase);
                MatchCollection matches = regex.Matches(html);
                if (matches.Count > 0)
                {
                    foreach (Match match in matches)
                    {
                        if (match.Success)
                        {
                            Console.WriteLine("Found {0}", match.Captures[0]);
                        }
                    }
                }
            }
        }

取得するhref値は、現在のディレクトリを基準にしていることに注意してください。

于 2012-07-06T06:53:26.380 に答える
0
string[] s = Directory.GetFiles(path);
        int i = 0;
        while (i < s.Length)
        {
            if (s[i].Substring((s[i].IndexOf(".") + 1), 3).Equals("zip"))
            {
                Response.Write(s[i].ToString());
                i = i + 1;
            }
        }

これを試して。

編集

int slashIndex = url.lastIndexOf('/'); 
int dotIndex = url.lastIndexOf('.zip', slashIndex);
String filenameWithoutExtension; 
if (dotIndex == -1) 
{   
     filenameWithoutExtension = url.substring(slashIndex + 1); 
} 
else 
{   
     filenameWithoutExtension = url.substring(slashIndex + 1, dotIndex); 
} 

これは、ファイル名が最後に付加されているURLで機能します/エラー処理はあなたに任せます/

于 2012-07-06T05:47:15.190 に答える
0

マイケルによって提案されたように、私は次のように質問の解決策を得ました:

string urlpath = "http://www.example.com/folder/"
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlpath);
    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
    {
       using (StreamReader reader = new StreamReader(response.GetResponseStream()))
       {
           string html = reader.ReadToEnd();
           Regex regEx = new Regex(@".*/(?<filename>.*?)\.zip");
           MatchCollection matches = regEx.Matches(html);
           if (matches.Count > 0)
           {
                foreach (Match match in matches)
                {
                  if (match.Success)
                  {

                    Console.WriteLine(match.Groups["filename"].Value);
                  }
            }
       }

   }
于 2012-07-06T09:21:54.173 に答える
-1

GetFileNameファイル名を取得するために使用できます。

例えば:

System.IO.Path.GetFileName(path);

また

ディレクトリからファイル名を取得するには、次の手順を試してください。

var filenames = String.Join(", ", Directory.GetFiles(@"c:\", "*.zip").Select(filename => Path.GetFileNameWithoutExtension(filename)).ToArray());

于 2012-07-06T05:36:18.747 に答える