Je travaille actuellement sur un script de téléchargement de fichier AJAX, qui fonctionne comme un charme dans Firefox mais ne fonctionne pas dans IE.jQuery Support de navigateur croisé AJAX Fileupload
c'est le HTML de base que je utilise:
<form >
<input type="file" name="FileFields" id="FileFields"/>
<button type="button" onclick="uploadFile();" id="uploadButton">Upload</button>
<ul id="files"/>
... other form elements ...
</form>
<div id="fileUploadDiv"/>
c'est la fonction UploadFile:
function uploadFile()
{
//we don't want more then 5 files uploaded
if($('#files li').size() >= 5)
{
return;
}
//disable the upload button
$('#uploadButton').attr('disabled','disabled');
//show loading animation
$('#files').append(
$('<li>')
.attr('id','loading')
.append(
$('<img>').attr('src','/images/loading.gif')
)
.addClass('loading')
);
//add all neccessary elements (the form and the iframe)
$('#fileUploadDiv').append(
$('<form action="/uploadFile" method="post" id="fileUploadForm">')
.attr('enctype','multipart/form-data')
.attr('encoding', 'multipart/form-data')
.attr('target', 'upload_frame')
.append(
$('#FileFields').clone()
.css('visibility','hidden')
)
.append(
$('<iframe>').attr('name','upload_frame')
.load(function(){finishedPostingFile();})
.attr('id','upload_frame')
.attr('src','')
.css({
'width':'0px',
'height':'0px',
'border':'0px none #fff'
})
)
);
//start uploading the file
$('#fileUploadForm').submit();
}
et finishedPostingFile() serait la fonction de rappel une fois que l'iframe a terminé l'affichage /chargement. Maintenant, cela fonctionne comme un charme dans Firefox mais ne fonctionne pas dans Internet Explorer. Je ai déjà compris que IE a besoin de attr('encoding',...)
au lieu de attr('enctype',...)
et je l'ai également essayé sans créer le formulaire et iframe à la volée en écrivant ces éléments en tant que html simple, ce qui n'a pas vraiment fait de différence.
IE (IE8, pour être concret, il n'a pas testé dans < 8) ne donne pas une erreur et l'animation de chargement ne cesse de filer, sans jamais le fichier en cours de téléchargement ... Quelqu'un at-il une idée sur comment faire ce travail?
Avez-vous déjà eu une bonne réponse à ce sujet? – camainc