427 votes

Comment obtenir le nom de fichier à partir d'un chemin d'accès complet à l'aide de JavaScript?

Est-il possible que je peux obtenir la dernière valeur (basé sur le '\' symbole) à partir d'un chemin complet?

Exemple:

C:\Documents and Settings\img\recycled log.jpg

Avec cette affaire, je veux juste recycled log.jpg depuis le chemin d'accès complet dans le JavaScript.

858voto

nickf Points 185423
var filename = fullPath.replace(/^.*[\\\/]/, '')

Cela permettra de gérer à la fois \ OU / dans les chemins de

93voto

bobince Points 270740

La plateforme ne le voie venir? Windows chemins sont différents de POSIX chemins sont différents à partir de Mac OS 9 chemins sont différents de RISC OS chemins sont différents...

Si c'est une application web dont le nom peut venir de différentes plates-formes, il n'y a pas de solution unique. Toutefois raisonnable stab est d'utiliser à la fois le caractère '\' (Windows) et '/' (Linux/Unix/Mac et aussi une alternative à Windows) comme des séparateurs de chemin. Voici un non-RegExp version pour plus de plaisir:

var leafname= pathname.split('\\').pop().split('/').pop();

32voto

user129661 Points 191

Ates, votre solution ne protège pas contre une chaîne vide en entrée. Dans ce cas, il échoue avec l' TypeError: /([^(\\|\/|\:)]+)$/.exec(fullPath) has no properties.

bobince, voici une version de nickf du qui gère DOS, POSIX, et HFS chemin des délimiteurs (et les cordes à vide):

return fullPath.replace(/^.*(\\|\/|\:)/, '');

23voto

Epperlyg Points 101

La ligne suivante de code JavaScript va vous donner le nom de fichier.

var z = location.pathname.substring(location.pathname.lastIndexOf('/')+1);
alert(z);

10voto

Ates Goral Points 47670

Pas plus concis que nickf de la réponse, mais celle-ci directement "extraits" la réponse au lieu de remplacer les parties non désirées avec une chaîne vide:

var filename = /([^\\]+)$/.exec(fullPath)[1];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X