Lister fichiers sur serveur web [Résolu]

Signaler
Messages postés
224
Date d'inscription
mercredi 23 mai 2007
Statut
Membre
Dernière intervention
8 septembre 2014
-
TheGorgo
Messages postés
224
Date d'inscription
mercredi 23 mai 2007
Statut
Membre
Dernière intervention
8 septembre 2014
-
Bonjour,

Je cherche à lister le contenu d'un serveur web sur lequel il n'y a pas de fichier index.*

J'aimerais que mon HttWebRequest me retourne la liste des fichiers et dossiers, comme le fait n'importe quel navigateur quand il n'y a pas d'index.

En paramètre je passe une URL qui pointe sur le dossier en question -> http://monServeur/monDossier/

HttpWebRequest me retourne une erreur 404.

Quelqu'un saurait-il comment faire ?

Merci d'avance

4 réponses

Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
13
Salut, en espérant que ce lien te donne satisfaction : lien

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
Messages postés
224
Date d'inscription
mercredi 23 mai 2007
Statut
Membre
Dernière intervention
8 septembre 2014
1
Merci pour l'aide, j'avais fait le tour de google en tapant HttpWebRequest mais j'avais pas pensé à aller voir du côté des aspirateurs de site.

Je poste la solution pour ceux que ca interesse :

    class Program
    {
        public static void Main(string[] args)
        {
           string urlBase = "http://....../";
           string filesFolderUrl = urlBase + "/Dossier";

           HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(filesFolderUrl);
           HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();

           if (httpWebResponse.StatusCode == HttpStatusCode.OK)
           {
               Stream rs = httpWebResponse.GetResponseStream();
               StreamReader sr = new StreamReader(rs);
               StringBuilder sb = new StringBuilder();

               char[] read = new Char[256];
               int count = sr.Read(read, 0, 256);

               while (count > 0)
               {
                   sb.Append(read, 0, count);
                   count = sr.Read(read, 0, 256);
               }
               sr.Close();
               httpWebResponse.Close();

               // Extract  from html
               string expression = @"]*?HREF\s*=\s*[""']?" + @"([^'"" >]+?)[ '""]?>";
               Regex regEx = new Regex(expression, RegexOptions.Multiline | RegexOptions.IgnoreCase);
               MatchCollection matches = regEx.Matches(sb.ToString());

               Console.WriteLine(sb.ToString());

               foreach (Match match in matches)
               {
                   // extract href attribute value
                   string href = Regex.Match(match.Value, "([""'](?.*?)[""'])", RegexOptions.Multiline | RegexOptions.IgnoreCase).Value;
                   href = href.Replace(""", "");

                   // foldernames start and end with / but files only start with /
                   if (href.StartsWith("/") &&  !href.EndsWith("/"))
                   {
                       string fileToGet = urlBase + href;

                       Console.WriteLine(fileToGet);
                       // file download code here...
                   }
               }
           }
       }
    }


Trouvée :
Messages postés
2
Date d'inscription
mardi 29 juillet 2003
Statut
Membre
Dernière intervention
10 juin 2010

Super !! c'est exactement ce qu'il me faut. Seulement je viens de tester...
et la page HTML est bien lue oui, mais l'expression réguliere ne trouve rien.
Je la trouve illisible, je ne sais pas ce qu'elle fait (je comprend dans les grandes lignes, mais pas en détail)
Donc impossible de changer quoi que ce soit :-s

Quelqu'un pour expliquer ?
Messages postés
224
Date d'inscription
mercredi 23 mai 2007
Statut
Membre
Dernière intervention
8 septembre 2014
1
Salut,

Je la trouve aussi illisible.
Apparement elle est sensée extraire les liens.