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

Karin.code 179 Messages postés vendredi 2 septembre 2016Date d'inscription 30 août 2017 Dernière intervention - 9 janv. 2017 à 21:25 - Dernière réponse : Karin.code 179 Messages postés vendredi 2 septembre 2016Date d'inscription 30 août 2017 Dernière intervention
- 13 janv. 2017 à 12:43
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 

11 réponses

Répondre au sujet
Whismeril 10601 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 18 décembre 2017 Dernière intervention - 9 janv. 2017 à 21:34
0
Utile
9
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 179 Messages postés vendredi 2 septembre 2016Date d'inscription 30 août 2017 Dernière intervention - 13 janv. 2017 à 11:25
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 1388 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention > Karin.code 179 Messages postés vendredi 2 septembre 2016Date d'inscription 30 août 2017 Dernière intervention - 13 janv. 2017 à 12:12
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 179 Messages postés vendredi 2 septembre 2016Date d'inscription 30 août 2017 Dernière intervention > vb95 1388 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention - 13 janv. 2017 à 12:42
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 10601 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 18 décembre 2017 Dernière intervention - 13 janv. 2017 à 11:32
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 179 Messages postés vendredi 2 septembre 2016Date d'inscription 30 août 2017 Dernière intervention > Whismeril 10601 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 18 décembre 2017 Dernière intervention - 13 janv. 2017 à 12:36
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
Karin.code 179 Messages postés vendredi 2 septembre 2016Date d'inscription 30 août 2017 Dernière intervention - 13 janv. 2017 à 12:43
0
Utile
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.