L'envoi de fichiers /upload d'un fichier à l'aide d'ajax qui fonctionne dans IE9

J'ai besoin de télécharger des fichiers à l'aide d'ajax qui doit être pris en charge dans IE9. J'ai été en utilisant FormData comme mentionné ici. Mon code ressemble à ceci:

var files = new FormData();
JQuery.each($('#file')[0].files, function (i, file) {
    files.append('file', file);
});

$.ajax({
    type: "POST",
    url: '/url',
    cache: false,
    contentType: false,
    processData: false,
    data: files,
    ...
});

Cela fonctionne bien dans Safari et Firefox, mais échoue dans IE9 comme le FormData n'est pas pris en charge dans IE9. J'ai essayé d'envoyer tout comme un fichier en paramètre:

data: $('#file')[0].files[0]
contentType: 'multipart/form-data'

Cela échoue car les données sont transmises dans l'url-forme codée et ne peut pas être analysée à la java côté. Toute aide ou un pointeur sur la façon de résoudre ce sera grandement apprécié. J'ai besoin de quelque chose qui fonctionne sur tous les navigateurs.

EDIT: je n'ai pas besoin de la barre de progression de téléchargement, les fichiers sont généralement de petite taille. Je n'ai pas besoin de télécharger de multiples fichiers. J'ai juste besoin d'un seul de téléchargement de fichiers.

J'ai trouvé une question similaire ici: stackoverflow.com/questions/2320069/jquery-ajax-file-upload
Je ne peux pas utiliser de spécifier l'action dans le formulaire '<form action="upload.php" method="post" enctype="multipart/form-data"> " comme il peut y avoir plusieurs actions, en fonction de l'entrée utilisateur. J'ai donc un "clic" de l'action sur le bouton de téléchargement, qui détermine le type d'entrée que nous avons obtenu à partir de l'utilisateur et le rediriger en conséquence. Nous avons connu cela plus tôt, et il était en marche, mais maintenant l'exigence changé pour rediriger vers l'url différente de la fonction/fonction de l'entrée utilisateur.

OriginalL'auteur Alice | 2012-11-20