Puis-je utiliser le code jQuery suivant pour télécharger un fichier en utilisant la méthode POST d'une requête ajax ?
$.ajax({
type: "POST",
timeout: 50000,
url: url,
data: dataString,
success: function (data) {
alert('success');
return false;
}
});
Si c'est possible, dois-je remplir la partie data
? Est-ce la bonne méthode ? Je ne fais que POSTER le fichier du côté du serveur.
J'ai fait des recherches, mais ce que j'ai trouvé est un plugin alors que dans mon plan je ne veux pas l'utiliser. Du moins pour le moment.
Le téléchargement de fichiers n'est pas possible via ajax. Vous pouvez télécharger un fichier, sans rafraîchir la page, en utilisant IFrame. Vous pouvez vérifier plus de détails [ici][1].
MISE À JOUR:
Avec XHR2, le téléchargement de fichiers par AJAX est supporté. Par exemple, via l'objet [FormData][2], mais malheureusement, il n'est pas pris en charge par tous les anciens navigateurs.
Le support de FormData commence à partir des versions suivantes des navigateurs de bureau. IE 10+, Firefox 4.0+, Chrome 7+, Safari 5+, Opera 12+.
Pour plus de détails, voir [lien MDN][3].
[1] : http://www.ajaxf1.com/tutorial/ajax-file-upload-tutorial.html [2] : https://developer.mozilla.org/en-US/docs/Web/Guide/Using_FormData_Objects [3] : https://developer.mozilla.org/en-US/docs/XMLHttpRequest/FormData
Un téléchargement AJAX est effectivement possible avec XMLHttpRequest(). Pas de iframes nécessaires. La progression du téléchargement peut être affichée.
Pour plus de détails, voir : Réponse https://stackoverflow.com/a/4943774/873282 à la question https://stackoverflow.com/questions/4856917/jquery-upload-progress-and-ajax-file-upload.
Plus de détails sur mon blog : http://blog.manki.in/2011/08/ajax-fie-upload.html.