Salut !
J'ai un souci. J'ai un script utilisant ajax qui permet de sauvegarder sur un serveur le contenu d'un canvas.
Ce script renvoie à une page PHP qui stocke l'image:
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 function exportAndSaveCanvas() { var screenshot = Canvas2Image.saveAsPNG(canvas, true); canvas.parentNode.appendChild(screenshot); screenshot.id = "canvasimage"; data = $('#canvasimage').attr('src'); canvas.parentNode.removeChild(screenshot); var url = 'paint/export_paint.php'; $.ajax({ type: "POST", url: url, dataType: 'text', data: { base64data : data } }); }
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $data = $_POST['base64data']; $date=date('d_m_Y_H_i_s'); $image = "paint_".$date.".png"; $image = explode('base64,',$data); file_put_contents("paint_".$date.".png", base64_decode($image[1]));
Tout fonctionne très bien !
MAIS sur ma page principal (canvas), j'ai aussi mis un formulaire permettant de récupérer le nom, la classe... Pour ensuite stocker en BDD le nom, la classe et le nom de l'image.
J'avais pensé (on m'a aidé !) faire ma requête ajax puis soumettre le formulaire MAIS étant donné que je stocke la date à la seconde près, il se peut que le nom de l'image soit décalé d'une seconde par rapport à la BDD.
J'ai essayé de transmettre les données du formulaire envoimail par ajax aussi:
et de les récupérer pour les traiter en PHP:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $.ajax({ type: "POST", url: url, dataType: 'text', data: $("#envoiemail").serialize() + "&base64data=" + data, success: function() { // indiquer à l'utilisateur que le traitement a réussi } });
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $data = $_POST['base64data']; echo $data; $date=date('d_m_Y_H_i_s'); $classe = $_POST['classe']; $nom = $_POST['nom']; $image = "paint_".$date.".png"; $message = $_POST['message']; $image = explode('base64,',$data); file_put_contents("paint_".$date.".png", base64_decode($image[1])); $image_nom = "paint_".$date.".png"; if ($_POST['nom']!="") { mysql_query("INSERT INTO album (nom,classe,image,message,date) VALUES ('$nom','$classe','$image_nom','$message', now())");} [...]
Et c'est là que ça coince !
- Niveau BDD >> OK
- Niveau image >> l'image est dégradée, vide ou noir !!!
Je n'arrive pas à voir d'où vient le problème !
On dirait que le stockage de l'image est interrompu ??
Si je commente les reqûetes SQL même problème !
Merci de votre aide précieuse !!!!!
A+
Coincoin22
Partager