Utilisation de jQuery pour obtenir le fichier d'entrée est sélectionné nom du fichier sans le chemin d'accès
J'ai utilisé ceci:
$('input[type=file]').val()
pour obtenir le nom de fichier sélectionné, mais il a renvoyé le chemin d'accès complet, comme dans "C:\fakepath\filename.doc". Le "fakepath" était effectivement là - vous ne savez pas si il est censé être, mais c'est ma première collaboration avec le nom de fichier de téléchargement de fichiers.
Comment puis-je obtenir le nom de fichier (filename.doc)?
- Le navigateur changements, le véritable chemin
C:\fakepath\
donc des sites malveillants ne pouvez pas utiliser javascript pour glaner des informations sur votre ordinateur de la structure de répertoire.
Vous devez vous connecter pour publier un commentaire.
ou vous pouvez simplement le faire (parce que c'est toujours
C:\fakepath
qui est ajouté pour des raisons de sécurité):Fakepath
avec un F majuscule?f
, mais j'ai changé ma réponse à remplacer par unregexp+ignorecase flag
.Vous avez juste besoin de faire le code ci-dessous. La première [0] pour accéder à l'élément HTML et la seconde [0] est l'accès le premier fichier de l'upload de fichier (j'ai inclus une validation dans le cas où il n'existe pas de fichier):
Chrome retourne
C:\fakepath\...
pour des raisons de sécurité - un site web ne devrait pas être en mesure d'obtenir des informations sur votre ordinateur, tels que le chemin d'accès à un fichier sur votre ordinateur.Pour obtenir juste le nom de fichier, partie d'une chaîne, vous pouvez utiliser
split()
...jsFiddle.
...ou un expression régulière...
jsFiddle.
...ou
lastIndexOf()
...jsFiddle.
Obtenir le chemin du travail avec tous les OS
Exemple
Fois de retour
var filename = $('input[type=file]').val().replace(/.*(\/|\\)/, '');
est à l'aide de jQuery.Voici comment je le fais, ça marche plutôt bien.
Dans votre code HTML à faire:
Ensuite dans votre fichier js créer une fonction simple:
Si vous êtes en train de faire plusieurs fichiers, vous devez également être en mesure d'obtenir la liste en parcourant ce:
peut-être certains plus pour éviter fakepath:
Comment quelque chose comme cela?
- T-il de jquery? Ou vous pouvez simplement utiliser du JavaScript natif
yourpath.split("\\")
de diviser la chaîne en tableau?Obtenir le premier fichier de la commande, puis le nom du fichier, il ignore le chemin d'accès au fichier sur Chrome, et aussi fera de la correction de chemin pour les navigateurs IE. Sur l'enregistrement du fichier, vous devez utiliser
System.io.Path.GetFileName
méthode pour obtenir le nom de fichier uniquement pour les navigateurs IECette solution semble la plus appropriée.