Bonjour à tous et merci d'avance pour vos lumières.

Le contexte :
Il s'agit d'un site de recettes de cuisine dans lequel les membres peuvent insérer des recettes accompagnées de photos.
Le PHP de base ne me pose aucun souci, traiter un formulaire avec des input de type "file" est un grand classique.
Je propose de plus en JavaScript, après avoir choisi une photo,
1. de la visualiser dans un élément HTML "img". Là encore, aucun souci, tout se passe bien.
2. de la recadrer. Cela se passe dans un canvas inséré dans une lightbox et fonctionne parfaitement. Dès que l'utilisateur a terminé, il clique sur un bouton de la lightbox, celle-ci disparaît et la photo recadrée vient remplacer la photo originale dans l'élément "img" correspondant. C'est l'upload de la photo recadrée qui me pose problème.

Fonctionnement :
Pour récupérer la photo recadrée, je me sers d'un second canvas invisible (display:none) dans lequel je crée un nouvel élément grâce à getContext('2d') et où je redessine l'image avec la fonction drawImage() puis je l'affiche dans l'élément "img" en lui donnant comme source la valeur obtenue par la fonction toDataURL().

Mais l'upload de cette source me conduit systématiquement à une erreur, voici le code de cette fonction que j'utilise certainement mal :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function uploadFile(nomInpFile, imgSrc)
{
	var	xhr = new XMLHttpRequest(),
		formData = new FormData();
 
	formData.append(nomInpFile, imgSrc);
	xhr.open('POST', urlDest, true);
	xhr.onload = function(){
		//alert(nomInpFile+' téléchargé dans '+urlDest);
		handleComplete(imgSrc.size);
	};
	xhr.onerror	= function(){
		alert(this.responseText);
		handleComplete(imgSrc.size);
	};
	xhr.upload.onprogress = function(event){
		handleProgress(event);
	}
	xhr.send(formData);
}
Les arguments que j'utilise pour cette fonction :
- nomInpFile est le nom de l'input de type "file" du formulaire
- imgSrc est la chaîne source de l'élément "img" dont je parle plus haut (*)
Le contenu de la chaîne urlDest est le fichier PHP qui va traiter le formulaire avec son chemin complet ('https [...... ] fichier.php')
NB : le "alert" n'est là que pour la mise au point et il m'indique que l'upload s'est bien passé...
Mais quand je valide le formulaire (bouton de type "submit"), je n'ai pas de fichier chargé dans le input "file" ($_FILES[$nomInpFile]['tmp_name'] est vide).

Éclairez-moi SVP.