160 votes

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)?

316voto

manji Points 26778
var filename = $('input[type=file]').val().split('\\').pop();

ou vous pouvez simplement le faire (parce que c'est toujours C:\fakepath qui est ajouté pour des raisons de sécurité):

var filename = $('input[type=file]').val().replace(/C:\\fakepath\\/i, '')

71voto

Diego Couto Points 43

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 d'un fichier:

    $('input[type=file]')[0].files[0].name

23voto

alex Points 186293

Chrome retours 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()...

var file = path.split('\\').pop();

jsFiddle.

...ou une expression régulière...

var file = path.match(/\\([^\\]+)$/)[1];

jsFiddle.

...ou lastIndexOf()...

var file = path.substr(path.lastIndexOf('\\') + 1);

jsFiddle.

21voto

Kotzilla Points 675

Obtenez de chemin de travailler avec tous les OS

var filename = $('input[type=file]').val().replace(/.*(\/|\\)/, '');

Exemple

C:\fakepath\filename.doc 
/var/fakepath/filename.doc

Les deux de retour

filename.doc
filename.doc

8voto

vafrcor Points 51

peut-être certains plus pour éviter fakepath:

var fileName = $('input[type=file]').val();
var clean=fileName.split('\\').pop(); // clean from C:\fakepath OR C:\fake_path 
alert('clean file name : '+ fileName);

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