Mon serveur Web reçoit un fichier image PNG d'une application iOS via POST. J'ai besoin de sauvegarder ce fichier PNG dans un fichier sur le disque dur avec PHP.Comment enregistrer une image dans un fichier reçu d'une application iOS avec PHP codé comme Hex?
Le POST-Data Je reçois ressemble à ceci:
& image = < 89504e47 0d0a1a0a 0000000d 49484452 ...
Comme vous pouvez le voir, je reçois l'image en tant que données HEX. J'ai essayé de sauvegarder l'image sur le disque mais le fichier résultant ne s'ouvrira pas. Toutes les applications indiquent que le fichier PNG est corrompu.
Les données que je reçois semblent correctes car si je mets simplement les données POST de mon fichier journal de serveur web dans un fichier avec mon éditeur HEX sur mon Mac, le PNG fonctionnera.
Mon code PHP:
$image = $_POST['image']);
$image = pack("H*", $image);
$filename = "image.png";
$f = fopen($filename,'wb');
fwrite($f, $image);
fclose($f);
+1 Envoyez-le en tant que fichier et vous n'aurez rien à foutre à la fin de PHP, il suffit de déplacer votre fichier reçu hors du répertoire temporaire où vous le souhaitez. –
Le problème est que je n'ai aucun contrôle sur l'application, car il n'est pas développé par moi. – norwald2
que faire si vous alimentez la fonction imagecreatefromstream de gd et l'écrivez sur le disque après cela? cf. http://www.php.net/manual/en/function.imagecreatefromstring.php – ceyquem