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

Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
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
Afficher la suite 

Votre réponse

2 réponses

Messages postés
12381
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 décembre 2018
0
Merci
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.
Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Dernière intervention
16 janvier 2018
-
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
vb95
Messages postés
1725
Date d'inscription
samedi 11 janvier 2014
Dernière intervention
11 décembre 2018
> Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
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
Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Dernière intervention
16 janvier 2018
> vb95
Messages postés
1725
Date d'inscription
samedi 11 janvier 2014
Dernière intervention
11 décembre 2018
-
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
Whismeril
Messages postés
12381
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 décembre 2018
-
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
Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Dernière intervention
16 janvier 2018
> Whismeril
Messages postés
12381
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 décembre 2018
-
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)
Commenter la réponse de Whismeril
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Dernière intervention
16 janvier 2018
0
Merci
merci Whismeril et Vb95 pour votre aide
Commenter la réponse de Karin.code

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.