2010-12-08 4 views
1

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); 

Répondre

1

Vous devez utiliser la méthode $_FILE[] pour envoyer et récupérer votre image PNG sur iOS. Passer la commande ce tutoriel qui explique comment générer le formulaire et l'envoyer à votre service PHP, il est assez simple:

http://iphone.zcentric.com/2008/08/29/post-a-uiimage-to-the-web/

+0

+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. –

+0

Le problème est que je n'ai aucun contrôle sur l'application, car il n'est pas développé par moi. – norwald2

+0

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

0

Mon approche était la bonne.

La raison pour laquelle mon code PHP n'a pas fonctionné était parce que la chaîne de données HEX fournie par l'application iOS était en quelque sorte formatée et comprenait donc des espaces et des caractères "<" et ">". Après les avoir enlevés, tout fonctionne.

Questions connexes