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.
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
Vous devez vous connecter pour publier un commentaire.
Malheureusement vous ne pouvez pas utiliser Ajax (
XMLHttpRequest
en d'autres mots) pour l'envoi de fichiers, mais vous pouvez mettre en œuvre un comportement similaire à l'aide de la<iframe/>
avec un<form method="post" enctype="multipart/form-data"/>
qui contient un<input type="file"/>
qui envoie un utilisateur de choisir un fichier à l'aide de la façon "naturelle". Vous pouvez utiliser javascript pour appeler laform.submit()
interroger que<iframe/>
de document parent pour vérifier si le processus de chargement est terminé.jQuery
a beaucoup de plugins cool pour l'obtention de ce travail fait, il n'y a mon préféré, par exemple.Grâce Danijar. Qui a résolu mon problème. Hâte de IE10
Vous pouvez envoyer un fichier au serveur à l'aide de données blob.
OriginalL'auteur