Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1493 connectés 

  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  Encodage d'un fichier jpeg via Ajax

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Encodage d'un fichier jpeg via Ajax

n°2329131
snike
Posté le 14-02-2019 à 10:50:51  profilanswer
 

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.
 
 

mood
Publicité
Posté le 14-02-2019 à 10:50:51  profilanswer
 

n°2329145
snike
Posté le 14-02-2019 à 13:01:18  profilanswer
 


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.

n°2329149
mechkurt
Posté le 14-02-2019 à 14:19:20  profilanswer
 

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
n°2329153
snike
Posté le 14-02-2019 à 14:54:49  profilanswer
 

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

n°2329158
mechkurt
Posté le 14-02-2019 à 15:50:42  profilanswer
 

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
n°2329180
snike
Posté le 15-02-2019 à 08:22:23  profilanswer
 

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.

n°2329237
mechkurt
Posté le 15-02-2019 à 15:30:39  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  Encodage d'un fichier jpeg via Ajax

 

Sujets relatifs
Fichier XML / Base de donnéeliste des feuilles d'un fichier excel
Comment Modifier le contenu d'un fichier txt chaque jour par csvoccurrenc d'un mot dans un fichier
Fichier JSON to stringNotification sur smartphone quand un fichier sur PC est modifié
Lecteur audio et fichier acentué[DEBUTANT] Condition pour ouvrir un fichier ne fonctionne pas
Tester si la chaine de caractère mène a un dossier ou un fichierVBA : Autoriser modifications à l'ouverture d'un fichier
Plus de sujets relatifs à : Encodage d'un fichier jpeg via Ajax


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR