PHP créer une image à partir de l'application/octet stream
Ma demande est d'avoir les images envoyées à partir d'appareils mobiles avec le content-type "application/octet-stream".
J'ai besoin de traiter ces images à l'aide de la librairie GD, ce qui signifie que je dois être capable de créer un objet image à partir des données.
En général, j'ai été en utilisant imagecreatefromjpeg, imagecreatefrompng, imagecreatefromgif, etc, afin de gérer les fichiers téléchargés à partir des formulaires web, mais cela ne semble pas fonctionner quand elle vient à moi en tant que application/octet-stream.
Des idées sur comment je peux atteindre mon objectif?
MODIFIER
Voici le code que j'utilise pour créer l'image identifiant...mon gestionnaire fonctionne parfaitement tout au long de mon site, à la seule différence que je peux dire, entre mon site et les données à partir de l'iOS est le type de contenu
public function open_image($path) {
# JPEG:
$im = @imagecreatefromjpeg($path);
if ($im !== false) { $this->image = $im; return $im; }
# GIF:
$im = @imagecreatefromgif($path);
if ($im !== false) { $this->image = $im; return $im; }
# PNG:
$im = @imagecreatefrompng($path);
if ($im !== false) { $this->image = $im; return $im; }
$this->error_messages[] = "Please make sure the image is a jpeg, a png, or a gif.";
return false;
}
+1 merci de nous montrer le code que vous utilisez.
J'ai jeté le code là-haut, merci 🙂
OriginalL'auteur johnnietheblack | 2011-05-09
Vous devez vous connecter pour publier un commentaire.
Facile 🙂
Spécifiquement:
Pas exactement, mais assez proche:
$image = imagecreatefromstring( file_get_contents($_FILES['myphoto']['tmp_name']) );
ahh, qui fait sens...de sorte que le fichier tmp est fondamentalement juste un "fichier texte" à la chaîne à l'intérieur? (im bien évidemment de nouveau à cet aspect de la gestion des données)
Le fichier tmp est probablement binaire (à moins que l'image téléchargée est une SVG), et
file_get_contents()
juste obtient les données. Le'tmp_file'
partie contient simplement le nom du fichier stocké sur le serveur. Vous pouvez voir cela en utilisant:echo '<pre>'.print_r($_FILES,true).'</pre>;
<- par ailleurs, c'est très utile, extrait de l'inspection des variables PHP.OriginalL'auteur Christian
J'ai trouvé ça dans le codeigniter forum un moyen de changer le mime et ça marche, je suppose que vous pouvez utiliser pour d'autres structures, c'est le lien et ce le code:
Extension Fileinfo doit être installé sur le serveur.
Il a travaillé pour moi.
OriginalL'auteur jonaypelluz
vous pouvez utiliser cette fonction. il ne nécessite aucune autre dépendance. et fonctionnent parfaitement pour d'autres types aussi.
OriginalL'auteur Govind Totla