Extraire nom du fichier apartir d'un url.

Résolu
MiharbiDoNo Messages postés 150 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 25 mai 2012 - 22 août 2009 à 22:27
MiharbiDoNo Messages postés 150 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 25 mai 2012 - 25 août 2009 à 02:03
est ce que possible d'extraire un nom du ficher, apartir d'un lien, même si ce lien ne ce termine necessairement pas par le nom du ficher

c'est comme en utilisant IE, quant on click un lien de telechargement, un savefiledialog s'afficher, avec le nom du ficher à telechargé deja ecrit dans le textbox du savefiledialog.

merci.

14 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 août 2009 à 22:20
morceau de code vite fait :

        With System.Net.HttpWebRequest.Create("http://www.iconspedia.com/dload.php?up_id=37031")
            .Method = "HEAD"
            MsgBox(.GetResponse.Headers.ToString())
        End With


Renfield - Admin CodeS-SourceS - MVP Visual Basic
3
MiharbiDoNo Messages postés 150 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 25 mai 2012
25 août 2009 à 02:03
té vrément geniàl. j'ài essàyé de fàire une tite fonction :
    Private Function GetUriFileName(ByVal Uri As String) As String
        Dim req As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(Uri)
        req.Method = "HEAD"
        Dim headers As String = req.GetResponse.Headers.ToString()
        MsgBox(headers)
        Dim file As String = headers.Substring(headers.IndexOf("filename=") + 10)
        file = file.Substring(0, file.IndexOf(""""))
        Return file
    End Function


dommàge ke le mot "filename=" n'est pàs toujours trouver dàns les heàders, màis code à improuvé ^^
merci trés super.

ps: dzl pour là lànguge sms, mon clàvier bloke, à,ku,double v et bàeucoup d'àutre touche màrche pàs.
3
MiharbiDoNo Messages postés 150 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 25 mai 2012
23 août 2009 à 03:50
je m'explique +:
http://site.com/fichier.ext
on peut dire que c facile de deviné le nom ficher, c "fichier.ext"
mais si c comme sa :
http://site.com/download?=1351+azex;zae
comment on peut extraire le nom du fichier?
peut etre avec webrequest??
0
MiharbiDoNo Messages postés 150 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 25 mai 2012
24 août 2009 à 13:45
bump pleaaase
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 août 2009 à 14:07
possible via une regexp :

^.+/(\w+(?:\.\w+)?)(?:\?.+)?


http://site.com/download?=1351+azex;zae
http://site.com/fichier.ext

=> download
=> fichier.ext


Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
MiharbiDoNo Messages postés 150 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 25 mai 2012
24 août 2009 à 14:20
j'eté entrain de jouer un peut avec ce code, tous ce que j'ai trouver c WebRequest.RequestUri.IsFile, et ça marche pas :s
j'ai pas assez compris votre methode, vous pouvez me l'expliquer svp??
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 août 2009 à 15:58
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        MsgBox(GetURLFileName("http://site.com/download?=1351+azex;zae"))
        MsgBox(GetURLFileName("http://site.com/fichier.ext"))
    End Sub

    Private Function GetURLFileName(ByRef vsFilePath As String) As String
        With New System.Text.RegularExpressions.Regex("([.\w]+)(?:\?.+)?$").Match(vsFilePath)
            If .Success Then
                Return .Groups(1).Value
            End If
        End With
        Return String.Empty
    End Function
End Class


Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
MiharbiDoNo Messages postés 150 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 25 mai 2012
24 août 2009 à 16:13
merci Renfield pour votre reponse, mais la manipulation des string ne fait pas toujours le travaill (maintenant que j'ai compris le code ^^)

voila un exanple de lien:
http://www.iconspedia.com/dload.php?up_id=37031

si on insert ce lien dans la barre d'adresse d'un explorateur, un savefiledialog s'affichera, pour telecharger le fichier nommé "Maxthon.ico"

enfait le nom de fichier n'existe pas dans le lien, alors necessairement l'explorateur envoi une "request" qui retourne le nom du fichier "Maxthon.ico".

merci.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 août 2009 à 16:14
voir réponse HTTP:


HTTP/1.1 200 OK
Accept-Ranges: none
Date: Mon, 24 Aug 2009 14:14:21 GMT
Server: Apache/2.2.11 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.2.9
X-Powered-By: PHP/5.2.9
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Disposition: attachment; filename="Maxthon.ico"
Content-Type: application/text
Content-Length: 370076
Proxy-Connection: Keep-Alive
Connection: Keep-Alive




Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 août 2009 à 16:18
suffit donc d'envoyer un :

HEAD /dload.php?up_id=37031 HTTP/1.0

au serveur www.iconspedia.com (port 80)
et zou...

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
MiharbiDoNo Messages postés 150 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 25 mai 2012
24 août 2009 à 16:51
euh, j'ai trouvé des defficulté en essayant de convertir cette reponse http en string.
je c'est comment telecharger, mais comme un array de byte, ou le nom est specifier.
j'ai essayer avec un webbrowser, et document.getelementbyID("filename") (peut-etre??) mais envain. alors la je suis totalement blocké
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 août 2009 à 17:34
non, c'est le header...

utilises un HttpWebRequest
ca va tout seul


Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
MiharbiDoNo Messages postés 150 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 25 mai 2012
24 août 2009 à 18:14
ahh. c aussi simple.
mais j'arrive a extraire le host est la connextion, aprés la repense, mais j'arrive pas a trouver le nom du fichier :s
0
MiharbiDoNo Messages postés 150 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 25 mai 2012
24 août 2009 à 18:58
j'ai encore cherché dans msdn j'ai trouver sa:
http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.headers.aspx

mais sa marche pas avec les fichier a telechargé, j'arrive pas a extraire le nom.

on fait si quelqun peut m'aider, j'm interesse sur tou à l'extention du fichier.
merci beaucoup Renfield grâce a vous j'ai déjà appris beaucoup de choses.
0
Rejoignez-nous