Dans Google Chrome, j'ai essayé plusieurs façons + suivi et aucun ne me donne la valeur du nom de fichier qui a été joint, après validation je soumettrai le fichier. Mais toujours son indéfini ou val () ne trouve pas ..
Comment le résoudre?
console.log($("input[name='attachment[]']"));
/* Output:
[
<input type="file" name="attachment[]" id="attachment">
,
<input type="file" name="attachment[]" id="attachment">
,
<input type="file" name="attachment[]" id="attachment">
]
*/
$.each($("input[name='attachment[]']"), function(i,v) {
console.log(i);
console.log(v); //v.val() does not exist... even uploaded a file and showing file
});
/* Output:
0
<input type="file" name="attachment[]" id="attachment">
1
<input type="file" name="attachment[]" id="attachment">
2
<input type="file" name="attachment[]" id="attachment">
*/
return false;
Cela devrait fonctionner:
$("input[name='attachment[]']").each(function() {
var fileName = $(this).val().split('/').pop().split('\\').pop();
console.log(fileName);
});
Vous ne pouvez pas obtenir le chemin complet du fichier, car cela dépend du navigateur que vous utilisez. La seule valeur commune à tous les navigateurs pour un fichier d'entrée est le nom du fichier.
Je suggérerais quelque chose qui ressemble à ce qui suit:
$('input:file').change(
function(e){
console.log(e.target.files[0].name);
});
Si vous autorisez le téléchargement de plusieurs fichiers, utilisez l'attribut multiple
, puis obtenez chacun des noms:
$('input:file').change(
function(e){
var f = e.target.files,
len = f.length;
for (var i=0;i<len;i++){
console.log(f[i].name);
}
});
REMARQUE: dans les versions actuelles du navigateur, f[i].fileName
devrait être f[i].name
.
Le <input type=file>
l'élément a un index zéro FileList accessible via sa variable membre files
.
Vous pouvez accéder à cette liste via un sélecteur de requête:
document.querySelector('input[type=file]').files
Et vous pouvez accéder au nom du fichier avec la notation par points:
document.querySelector('input[type=file]').files[0].name
Il convient de noter que dans Chrome 53, Firefox 49 et la version actuelle spécification W3C pour FileAPI , files
est une liste de type tableau non un tableau réel. Vous pouvez accéder à chaque objet fichier via son index, mais vous n'aurez accès à aucun prototype de tableau sans d'abord convertir la liste en tableau.
for
<input type="file" mutiple onchange="getSongs(this.files)"/>
utilisation
function getSongs(files){
...
for(var i = 0; i < files.length; i++){
file=files[i];
filename=file.fileName;
}
}
si l'entrée est juste pour un seul fichier, utilisez simplement l'attribut name
$("type=['file']").attr('name');