147 votes

Javascript - Comment extraire un nom de fichier d'un contrôle d'entrée de fichier

Lorsqu'un utilisateur sélectionne un fichier dans une page Web, je veux pouvoir extraire uniquement le nom du fichier.

J'ai bien essayé la fonction str.search mais elle semble échouer lorsque le nom du fichier est quelque chose comme ceci : c :\uploads\ilike.this.file.jpg.

Comment pouvons-nous extraire juste le nom du fichier sans extension ?

228voto

chux valladanger Points 580

Pour diviser la chaîne ({filepath}/{filename}) et obtenir le nom du fichier, vous pouvez utiliser quelque chose comme ceci :

str.split(/(\\|\/)/g).pop()

"La méthode POP supprime le dernier élément d'un tableau et renvoie cette valeur à l'appelant."
Réseau de développeurs Mozilla

Exemple :

à partir de : "/home/user/file.txt".split(/(\\|\/)/g).pop()

vous obtenez : "file.txt"

145voto

Ian Oxley Points 5659

En supposant que votre <input type="file" > dispose d'un identifiant de téléchargement, cela devrait, espérons-le, faire l'affaire :

var fullPath = document.getElementById('upload').value;
if (fullPath) {
    var startIndex = (fullPath.indexOf('\\') >= 0 ? fullPath.lastIndexOf('\\') : fullPath.lastIndexOf('/'));
    var filename = fullPath.substring(startIndex);
    if (filename.indexOf('\\') === 0 || filename.indexOf('/') === 0) {
        filename = filename.substring(1);
    }
    alert(filename);
}

132voto

maxime schoeni Points 1802

De nos jours, il existe un moyen beaucoup plus simple :

var fileInput = document.getElementById('upload');   
var filename = fileInput.files[0].name;

41voto

Uchenna Okafor Points 1557

Très simple

let file = $("#fileupload")[0].files[0]; 
file.name

26voto

Xedret Points 399

En supposant :

<input type="file" name="file1" id="theFile">

Le JavaScript serait :

var fileName = document.getElementById('theFile').files[0].name;

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