Essayer d'accéder aux attributs de fichier à partir d'un champ de saisie après la sélection d'un fichier. J'ai essayé cela, mais obtenez l'erreur "fichier non défini"
var file = $("#uploadedfile").prop("files")[0];
var fileName = file.fileName;
var fileSize = file.fileSize;
alert("Uploading: "+fileName+" @ "+fileSize+"bytes");
Si #uploadedfile
est une entrée de type "fichier":
var file = $("#uploadedfile")[0].files[0];
var fileName = file.name;
var fileSize = file.size;
alert("Uploading: "+fileName+" @ "+fileSize+"bytes");
Normalement, cela se déclencherait sur l'événement de changement, comme suit:
$("#uploadedfile").on("change", function(){
var file = this.files[0],
fileName = file.name,
fileSize = file.size;
alert("Uploading: "+fileName+" @ "+fileSize+"bytes");
CustomFileHandlingFunction(file);
});
EDIT: Kevin a raison dans son commentaire sur la propriété des fichiers, édité!
MODIFIER ENCORE: La syntaxe correcte n'est pas
filename = this.files[0].filename;
mais
filename = this.files[0].name;
filesize = this.files[0].size;
Ajout d'un Fiddle qui devrait fonctionner sur plusieurs navigateurs: http://jsfiddle.net/eq3Qv/
<form id = "uploadForm" name = "uploadForm" enctype="multipart/form-data">
<label for="uploadFile">Upload Your File</label>
<input type="file" name="uploadFile" id="uploadFile">
</form>
<script>
$('#uploadFile').change(function(){
var fileName = this.files[0].name;
var fileSize = this.files[0].size;
var fileType = this.files[0].type;
alert('FileName : ' + fileName + '\nFileSize : ' + fileSize + ' bytes');
});
</script>
Remarque: Pour obtenir le nom du fichier de téléchargement, utilisez la méthode jquery val ().
Pour Ex:
var fileName = $('#uploadFile').val();
J'ai vérifié ce code ci-dessus avant de poster, cela fonctionne parfaitement.!
Pour obtenir les noms de fichiers, utilisez:
var files = document.getElementById('inputElementID').files;
En utilisant jQuery (puisque vous l'êtes déjà), vous pouvez l'adapter aux éléments suivants:
$('input[type="file"][multiple]').change(
function(e){
var files = this.files;
for (i=0;i<files.length;i++){
console.log(files[i].fileName + ' (' + files[i].fileSize + ').');
}
return false;
});
Essayez
var file = $("#uploadedfile").prop("files")[0];
var fileName = file.name;
var fileSize = file.size;
alert("Uploading: "+fileName+" @ "+fileSize+"bytes");
Ça a marché pour moi
Le input.files
l'attribut est une fonctionnalité HTML5. C'est pourquoi certains navigateurs ne renvoient rien. Ajoutez simplement une solution de rechange à l'ancien simple input.value
(chaîne) si files
n'existe pas.
référence: http://www.w3.org/TR/2012/WD-html5-20121025/common-input-element-apis.html#dom-input-files