Encodage d'un fichier jpeg via Ajax

Encodage d'un fichier jpeg via Ajax - Javascript/Node.js - Programmation

Marsh Posté le 14-02-2019 à 10:50:51    

Bonjour,
 
  Le titre n'est peut être pas très clair. Je cherche à sauvegarder une image récupérée par javascript (jquery).
 
  J'ai dans ma page source un code qui récupère le contenu de l'image et l'envoi vers une page php qui pourra l'enregistrer :
 
Script js source (encodé en UTF8) :

Code :
  1. $.get(url_jpeg,function(img) {
  2.     $.post("http://serveur.fr/sauv_img.php",{content:img});
  3.   })


 
et le script sauv_img.php (encodé en ANSI) :

Code :
  1. <meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
  2. <?php
  3.     file_put_contents("test.jpeg",utf8_encode($_POST['content']));
  4. ?>


 
L'image est, selon Notepad++, encodée en ANSI.
Lorsque je récupère le contenu de mon image, je récupère normalement du contenu encodé en ANSI ?
Que se passerait-il entre mon $.post et mon script php ?
Avez-vous une solution pour que mon fichier jpeg sauvegardé soit lisible ?
 
Merci par avance.
 
 

Reply

Marsh Posté le 14-02-2019 à 10:50:51   

Reply

Marsh Posté le 14-02-2019 à 13:01:18    


J'avance...
 
Dans mon jpeg source j'ai des caractères du style ÿ qui à pour code hexa FF (ou 255) dans la table ANSI.
J'arrive dans javascript à convertir les caractères spéciaux avec la fonction escape(), par exemple ÿ devient %FF, ...
 
Dans mon php je récupère bien %FF et je peux convertir en ÿ avec urldecode() mais php se limite aux 255 premiers caractères car normalement une url est limitée à 255.
Comment, en php, décoder l'ensemble de ma chaine de caractères ?
 
Merci par avance.

Reply

Marsh Posté le 14-02-2019 à 14:19:20    

Envoi en base 64
https://www.google.com/search?q=jav [...] e64+encode
Et decode en base 64
https://www.google.com/search?q=php+base64+decode
 
Mais ne serait il pas plus simple d'envoyer l'url au php pour qu'il fasse directement un file_get_content ?


Message édité par mechkurt le 14-02-2019 à 14:21:03

---------------
D3
Reply

Marsh Posté le 14-02-2019 à 14:54:49    

Avec la fonction windows.btoa j'ai l'erreur InvalidCharacterError: String contains an invalid character
 

Reply

Marsh Posté le 14-02-2019 à 15:50:42    

https://www.google.com/search?q=win [...] +character
 
Mais encore une fois, vu que tu récupères le contenu d'une image via une url puis l'envoyer en post sur serveur php pour qu'il l'écrive...
 
...ne serait il pas plus simple d'envoyer l'url à php et de faire un file_put_contents("test.jpeg", file_get_content($_POST['url_jpeg']));
 
Pacque là ton image de mettons 2Mo fait le voyage depuis son serveur d'origine vers le navigateur du client qui exécutes le javascript (avec l'ADSL c'est très rapide) puis repart vers ton autre serveur (et souvent l'upload est 10x plus lent que le download) pour être écrite.
Avec ma solution c'est le serveur qui récupères directement l'image, c'est plus simple et efficace.
 
Par contre j’espère que tu vas réfléchir à des mécanismes de sécurisation car en l'état on pourrait croire que n'importe qui peut écrire n'importe quoi sur ton serveur, ce qui est assez inquiétant ! ^^


---------------
D3
Reply

Marsh Posté le 15-02-2019 à 08:22:23    

Bonjour,
 
  J'avais bien entendu commencé par cette solution, mais j'ai l'éternel erreur failed to open stream. Donc j'essaie de passer par une extension qui me permet serte de récupérer l'image, mais je dois l'enregistrer. Comme l'image est en plusieurs parties, je dois la recomposer donc c'était utile de l'envoyer sur un serveur php.
  Maintenant si vous avez d'autres solutions, je suis preneur.
 
Merci par avance.

Reply

Marsh Posté le 15-02-2019 à 15:30:39    

A mon avis, "failed to open stream" se rapporte plutôt au fait que tu n'as pas le droit d'écrire sur ton serveur que de lire depuis l'autre !
 
Est ce que ce code fonctionne et affiche ton image (IE l'a bien téléchargé, mais sans l'écrire) :

Code :
  1. <?php
  2. header("Content-type: image/jpg" );
  3. echo file_get_contents('https://nomdemonserveur.com/chemin/vers/mon/image.jpg');
  4. ?>


 
Et celui-ci te crée l'erreur (si oui c'est bien les droits d'écrire dans ton dossier qui sont en cause).

Code :
  1. <?php
  2. echo file_put_contents('test.txt', 'hello world');
  3. ?>


 
Quand à ton histoire de découper une image pour la reconstruire...


---------------
D3
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed