Récupérer le nom du fichier à partir d'un URL [Résolu]

Signaler
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018
-
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018
-
Bonjour,
je voudrais récupérer le nom d'un fichier, plus précisément le nom d'une image à partir d'un URL, j'ai trouvé le Poste suivant qui traite la même question que moi(http://codes-sources.commentcamarche.net/forum/affich-1350787-extraire-nom-du-fichier-apartir-d-un-url?login=1#top ), mais j'arrive pas à comprendre le résultat :
par exemple pour le lien suivant :
http://www.icone-png.com/png/12/12179.png
le nom de l'image est :
12179

le résultat à partir du code est :
Vary: Accept-Encoding
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Accept-Ranges: bytes
Content-Length: 4061
Content-Type: image/png
Date: Mon, 09 Jan 2017 20:23:05 GMT
ETag: "306bf2-fdd-515c34a263e18"
Last-Modified: Mon, 11 May 2015 00:16:30 GMT
Server: Apache

je ne comprends pas pourquoi
MiharbiDoNo 
a mis le sujet comme résolu
Merci d'avance pour vos réponses

2 réponses

Messages postés
15856
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
23 avril 2021
535
Bonsoir

la première solution qui viennent à l'esprit, c'est String.Split.
tu as "/" et "." comme séparateur, et tu prends l'avant-dernier item du résultat.

Tu peux aussi faire une regex.

Mais sinon, une url ça n'est jamais qu'un chemin, est il existe une classe pour manipuler les chemins, https://msdn.microsoft.com/fr-fr/library/system.io.path(v=vs.110).aspx il y a même une méthode qui retourne le nom d'un fichier sans l'extension.
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018
2
Bonjour,
j'ai utilisé la méthode proposé par Whismeril, elle fonctionne sans problème (merci Whismeril), mais hier j'ai remarqué un petit problème, j'ai trouvé ce URL (un URL d'une image) je me souviens pas du URL complet (https:// ................/NomImage.gif?16258100) quand j'utilise :
System.IO.Path.GetFileNameWithoutExtension(Url) -> NomImage
System.IO.Path.GetFileName(Url) -> NomImage.gif?16258100
System.IO.Path.GetExtension(Url) -> gif?16258100
Messages postés
2422
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
22 avril 2021
136 >
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018

bonjour Karine.code
reprenons ton nom de fichier : NomImage.gif?16258100
tout ce qui est avant le point est le nom : MonImage
tout ce qui est après est l'extension : gif?16258100
Mais l'extension est incorrecte car le ? est interdit dans les noms de fichier
il faut dire que tu récupères le nom de fichier avec l'extension sur une page internet et ta récupération doit s'arrêter au premier caractère non reconnu dans un nom de fichier
Les caractères interdits dans un nom de fichier ( nom + extension) sont :
< > : " / \ | ? * soit les signes supérieur à et inférieur à, les deux points, le guillemet, le slash et l'antislash, la barre verticale, le point d'interrogation et l'astérisque
une fonction toute simple peut faire l'affaire

Private Function TestNomFichier( Fichier as String) as String
Dim Cars As String = "<>:/\|?*"""
For i = 0 To Cars.Length - 1
If Fichier.Contains(Cars(i)) = True Then
Fichier = Fichier.Substring(0, Fichier.LastIndexOf(Convert.ToChar(Cars(i))))
End If
Next
Return Fichier
End function

Elle te renvoie NomImage.gif avec ton nom de fichier original

Attention aussi : si ton fichier est à l'origine NomImage.gif16258100 sans point d'intérrogation tu récupères gif16258100 comme extension !!!!
Et elle serait correcte du point de vue Windows

Le point d'interrogation a-t-il un rôle de séparateur d'information sur une page internet ? Je n'en sais rien du tout

Pour le rôle du point d'interrogation voir ici : https://forum.joomla.fr/showthread.php?191024-Point-d-interrogation-dans-l-URL
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018
2 >
Messages postés
2422
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
22 avril 2021

Bonjour Vb95,
c'est une bonne méthode, je n'avais pas pensé à ça, on localise le caractère interdit et on récupère ce qu'il y a avant lui
Messages postés
15856
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
23 avril 2021
535
Oui, Path fait un peu comme un split, il décompose les morceaux séparés par des / ou \ et prend le dernier comme nom de fichier (ça marche aussi si c'est un repertoire). Pour l'extension, il fait pareil à partir du résultat précédent et avec . comme séparateur.

Ça ne marche donc, qu'avec un vrai chemin
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018
2 >
Messages postés
15856
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
23 avril 2021

Bonjour Whismeril
je croyais avant que il localise l'extension dans le chemin d'accès, mais on dirait qu'il récupère ce qu'il y a après le point (le seul point qui peut être présent dans le "nom+extension" d'un fichier et celui qui sépare le nom de l'extension)
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018
2
merci Whismeril et Vb95 pour votre aide