IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Controle Existance de Fichier par le Net


Sujet :

VB.NET

  1. #1
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut Controle Existance de Fichier par le Net
    Salut All,

    Je cherche un moyen efficace et rapide de rechercher et controler si un fichier (dont je connais le nom) est present sur un serveur par internet (connu aussi)
    Ca fait qq temps que je cherche sur msdn et autres, mais sans grand resultat.
    J'ai passe en revu le My.Computer.Network et le System.Net mais ...

    Le mieux que j'ai trouve serait le system.net.webclient, mais j'ai juste besoin d'un retour de boolean.

    Merci pour votre aide.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Il faut faire une requête HTTP "HEAD" (et non POST ou GET), de façon à récupérer seulement les en-têtes. Si tu récupères un code 200 (OK), le fichier existe. S'il n'existe pas, c'est un 404 (Not found).

    La méthode suivante renvoie True si l'URL existe (200), False si elle n'existe pas (404), et lève une exception si une autre erreur se produit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Function CheckUrlExists(url As String) As Boolean
        Dim request As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest)
        request.Method = "HEAD"
        Try
            Using response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
                If response.StatusCode = HttpStatusCode.OK Then
                    Return True
                Else
                    Return False
                End If
            End Using
        Catch ex As WebException
            Dim response As HttpWebResponse = TryCast(ex.Response, HttpWebResponse)
            If response IsNot Nothing AndAlso response.StatusCode = HttpStatusCode.NotFound Then
                Return False
            Else
                Throw
            End If
        End Try
    End Function

  3. #3
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut
    Je me suis arrete sur ce fameux system.net.httpwebrequest mais il faut dire que la doc m'a laisse ... comment dire ... perplexe
    Un immense merci pour cette function que je vais aller tester de ce pas.

  4. #4
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut
    C'est nickel tom.
    J'ai juste rajoute un timeout et qq specifications.
    Par contre, je me demande pourquoi le throw ? merci de m'eclairer

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Danyel Voir le message
    C'est nickel tom.
    J'ai juste rajoute un timeout et qq specifications.
    Par contre, je me demande pourquoi le throw ? merci de m'eclairer
    En fait, HttpWebRequest.GetResponse lève toujours une exception si le serveur renvoie un code d'erreur (ce que je trouve pas très pratique d'ailleurs...), d'où le catch. Si l'exception est due à une erreur 404, c'est une erreur "attendue", donc on renvoie False pour dire que le fichier n'existe pas. Par contre, si c'est une autre erreur, genre accès refusé, on ne peut pas déterminer si le fichier existe, donc on relance l'exception interceptée par le catch (c'est à ça que sert le Throw sans paramètre, au cas où tu te demandais )

  6. #6
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut
    Génial ... que dire de plus

  7. #7
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut
    Arf pas glop, je viens de me rendre compte que l'appel fait executer le fichier demande ... et ca c'est pas bon !!!
    Une autre idee ?

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Danyel Voir le message
    Arf pas glop, je viens de me rendre compte que l'appel fait executer le fichier demande ...
    Hein ?
    Quel genre de fichier ? Si c'est un exe, il ne sera sûrement pas exécuté, ou alors je sais pas ce que tu utilises comme serveur
    Par contre si c'est une page ASPX, PHP ou assimilé, ce sera effectivement exécuté. En quoi est-ce un problème ? C'est fait pour ça...

  9. #9
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut
    Ce sont des fichiers .cgi ou .pl (tous en perl) en chmod 755.
    L'inconvenient, c'est que la plupart attendent des datas et s'executent pour faire qq chose ... qui peuvent engendrer d'autres actions ... etc.

    J'avais créé plusieurs fichiers pour faire mes tests, mais en condition reelle, ca a foutu un bord.. total
    Juste un petit exemple :
    Comme je controle ce qui entre et sors de mes cgi, il y a donc appel de 1 (ou il manque des datas), cela provoque une erreur (que je gere) et qui m'envoi (entre autre) des mails d'alertes ...
    Dans le pire des cas, ca peut planter le serveur ...

    En reflechissant un peu, et si tu n'as pas d'autres solutions pour faire ce check de fichier (sans l'executer), je peux de le contourner en appelant un autre cgi/perl ...

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Attends, tu me fais peur là... ces scripts sont supposés pouvoir s'exécuter en HTTP ou pas ? parce que si ce n'est pas le cas, tu aurais intérêt à revoir en vitesse les autorisations des fichiers et la conf du serveur web

    S'ils sont prévus pour s'exécuter en HTTP, il n'y a pas de moyen d'y accéder sans les exécuter (heureusement, sinon on pourrait récupérer les sources serveur de n'importe quel site...). Par contre tu peux créer un script qui vérifie sur le serveur l'existence du fichier spécifié, tu appelles ce script et tu regardes le résultat

  11. #11
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Attends, tu me fais peur là... ces scripts sont supposés pouvoir s'exécuter en HTTP ou pas ?
    Bien sur que si
    En fait, apres cette verification, je les utilise

    Citation Envoyé par tomlev Voir le message
    S'ils sont prévus pour s'exécuter en HTTP, il n'y a pas de moyen d'y accéder sans les exécuter (heureusement, sinon on pourrait récupérer les sources serveur de n'importe quel site...).
    Effectivement, c'est d'une logique implaquable, mais je ne pensais pas dans mon cas precis.

    Citation Envoyé par tomlev Voir le message
    Par contre tu peux créer un script qui vérifie sur le serveur l'existence du fichier spécifié, tu appelles ce script et tu regardes le résultat
    C'est ce dont a quoi je pensais.

    Merci pour ta patience et ton aide tom.

    ps : je suis quand meme etonne que tu ne m'as pas demande pourquoi j'utilise vb alors que perl est tres tres proche du c

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Danyel Voir le message
    ps : je suis quand meme etonne que tu ne m'as pas demande pourquoi j'utilise vb alors que perl est tres tres proche du c
    Ben je sais bien que tu es un indécrottable VBiste
    Perl très très proche du C ? la syntaxe ressemble un peu (et encore) mais à part ça les 2 langages n'ont pas grand chose en commun...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/04/2009, 17h44
  2. GERER FICHIER XML PAR VB.NET
    Par yidboulmane dans le forum ASP.NET
    Réponses: 1
    Dernier message: 17/09/2008, 14h52
  3. Remplacer des controles ajax dans un site ASP .net par des codes javascript
    Par Contact2012 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 15/09/2008, 13h50
  4. Transfert de fichiers volumineux par le net
    Par K-Kaï dans le forum Général Conception Web
    Réponses: 8
    Dernier message: 14/07/2008, 13h15
  5. [C#.NET 2.0] récupérer des fichiers par http
    Par cortex024 dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 21/02/2007, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo