Mais sur mon autre page quand je tente de la récupérer ça me dire que la variable est vide. Au mieu j'arrive à récupéré (comme le cas dans la fonction) la valeur de mon input file soit le lieu ou se trouve l'image en local...
Texte ou blob (chunk envoyé directement via l'object xmlhttpresquestuload) dépend du contexte de ton projet, perso je bosse sur un bouquet d'applis web. Le choix technique fait pour assurer l’interaction avec le serveur est JsonRpc strict (donc pas de contrôle direct d'xmlhttp et tant mieux ). Le format base64 permet du coup d'écrire des API assurant le transfert d'informations binaires. Dans ce cadre tu peux implémenter des API pour aller encore plus loin comme récupérer la liste des fichiers interrompus et en demander la reprise à l'utilisateur... ou l'upload non bloquant en tâche de fond, laissant l'utilisateur continuer son travail dans l'appli.
@Nami Doc parce que Ajax c'est pas du JavaScript ?
Bah, non, Ajax != Javascript ... Et j'ai toujours tendance à penser qu'on a pas accès aux toutes dernières nouveautés (conseillons d'utiliser les classes non?)
@Tracker à ce compte-là je crois qu'on abandonne la simplicité pour l'OP (wow je peux pas sauter une ligne correctement après un smiley)
@Nami Doc je n'ai pas dit AJAX = JavaScript. AJAX n'est pas un langage ; ça n'a pas de sens de dire qu'il n'implémente pas l'upload de fichiers. L'implémentation dépend maintenant du support de XMLHttpRequest : http://caniuse.com/#feat=xhr2
Niveau compatibilité la solution de Tracker est kif-kif avec l'utilisation de XMLHttpRequest 2. Et honnêtement je ne sais pas si ça vaut le coup d'utiliser le hack de l'iframe. Perso je laisserais les utilisateurs avec des "vieux" navigateurs passer par un upload synchrone classique, mis ça n'engage que moi
Ce n'est pas parce que vous ne savez pas vous servir d'un marteau qu'il faut planter des clous au tournevis.
Salut tout le monde, apres avoir galeré pendant un bon moment a chercher comment uploader des fichiers (notament des images en ajax), voici les petit plugin jquery que j'ai crée et que vous pouvez l'amelioré et l'adapté
jQuery(function($){
$.fn._serialize = function(){
form = this;
fd = new FormData();
function _(el){return document.getElementById(el);}