2009-10-19 9 views
2

Comment obtenir une liste de fichiers à partir d'un répertoire Web? Si j'accède à l'URL du répertoire Web, le navigateur internet liste tous les fichiers de ce répertoire. Maintenant, je veux juste obtenir cette liste en C# et les télécharger dans BITS (Background Intelligent Transfer Service).Comment obtenir une liste de fichiers à partir d'un répertoire Web?

Répondre

0

Ceci est un sujet intéressant que j'ai étudié assez récemment. Comme vous le savez, vous pouvez accéder à BITS via COM, mais voici les projets de couple pour le rendre plus facile:

SharpBITS.NET
Forms Designer Friendly Background Intelligent Transfer Service (BITS) wrapper

Ce article on MSDN pourrait être un peu plus que vous voulez savoir. J'ai expérimenté avec le code dans le lien CodeProject et il a semblé fonctionner raisonnablement bien. Le projet CodePlex a l'air vraiment bien mais je ne l'ai pas essayé.

+0

Note: J'utilise SharpBITS.net dans mon projet. Je suis d'accord semble être vraiment sympa. – Eric

3

A propos de « obtenir cette liste en C# » partie:

foreach (string filename in 
    Directory.GetFiles(
     Server.MapPath("/"), "*.jpg", 
     SearchOption.AllDirectories)) 
{ 
    Response.Write(
     String.Format("{0}<br />", 
      Server.HtmlEncode(filename))); 
} 
+0

Merci pour la réponse. C'est un excellent moyen de créer une liste, mais je ne veux pas créer une liste que je veux lire et analyser la liste des fichiers IIS par défaut dans un répertoire. – Eric

+0

@Eric, désolé je n'ai pas compris ce que vous essayez d'accomplir; Pouvez-vous s'il vous plaît élaborer votre problème? –

+0

Je ne comprends pas, quelle est la variable: Serveur? .. –

0

Eh bien, si le serveur Web permet de lister les fichiers du répertoire en question, vous êtes bon pour aller.

Malheureusement, il n'y a pas de norme sur la façon dont le serveur Web devrait vous renvoyer la liste. C'est souvent en HTML, mais le format HTML n'est pas toujours formaté de la même manière sur plusieurs serveurs Web.

Si vous souhaitez télécharger des fichiers toujours à partir du même répertoire sur le même serveur Web, il suffit de faire une "vue de la source" tout en étant dans le répertoire de votre navigateur Web. Essayez ensuite d'écrire une petite expression régulière qui récupérera tous les noms de fichiers de la source HTML.

Vous pouvez ensuite créer un WebClient, demander l'URL du répertoire, analyser la réponse pour obtenir les noms de fichiers avec votre expression régulière, puis traiter les fichiers avec votre BITS client

Hope this helps

0
private void ListFiles() 
{ 

    //get the user calling this page 
    Gaf.Bl.User userObj = base.User; 
    //get he debug directory of this user 
    string strDebugDir = userObj.UserSettings.DebugDir; 
    //construct the Directory Info directory 
    DirectoryInfo di = new DirectoryInfo(strDebugDir); 
    if (di.Exists == true) 
    { 

     //get the array of files for this 
     FileInfo[] rgFiles = di.GetFiles("*.html"); 
     //create the list ... .it is easier to sort ... 
     List<FileInfo> listFileInfo = new List<FileInfo>(rgFiles); 
     //inline sort descending by file's full path 
     listFileInfo.Sort((x, y) => string.Compare(y.FullName, x.FullName)); 
     //now print the result 
     foreach (FileInfo fi in listFileInfo) 
     { 
      Response.Write("<br><a href=" + fi.Name + ">" + fi.Name + "</a>"); 
     } //eof foreach 
    } //eof if dir exists 

} //eof method