提供されたbase64_decode引数のファイルタイプを返す関数を作成しました。画像でない場合、関数はfalseを返します。しかし、(jquery ajax(FormDataオブジェクト)を介して)エンコードされたイメージを渡すとき、この関数は毎回falseを返します。私は多くのことを試みましたが、それを働かせることはできません。Php | base64_decodeをimageとして検証する| Not working
編集:私は今、Javascriptのエラーを取得しています、ここにある:
"キャッチされないでSyntaxError:位置0でJSONで予期しないトークン"
function base64_extension($base64){
$base64 = str_replace("data:image/png;base64,", "", $base64);
$base64 = base64_decode($base64);
$base64 = imagecreatefromstring($base64);
if(!$base64){
return 0; /* Not image */
}
if(imagepng($base64)){
imagedestroy($base64);
return 1;
}else if(imagejpeg($base64)){
imagedestroy($base64);
return 2;
}
else if(imagegif($base64)){
imagedestroy($base64);
return 3;
}
else{
return 4; /* Not image */
}
}
CLIENT
var cropCanvas = $('#user-img').cropper('getCroppedCanvas');
var cropImg = cropCanvas.toDataURL("image/jpeg");
var formData = new FormData();
formData.append('pic', cropImg);
次にI formDataをここでajaxに渡します。
あなたは 'imagecreateのいずれか*'関数で作成したイメージを持っていたら、出力することができ関わらず 'png'、' jpg'、 'gif'のような画像の任意のタイプ入力形式は何でしたか。イメージを作成することは、拡張子が操作して理解できるイメージ形式で出力できる 'GD'形式であることを意味します。 –
また、デコードしている画像データの例がありますか?私が正しく覚えていれば、そのようなajaxから送られたデータにはコンテンツタイプが含まれています。それを取り除くのでなければ、悪質な 'base64_decode'のデータが得られます。あなたはそれからイメージを作成することはできません。 –
@JonathanKuhn関連するクライアントコードで質問を更新しました。 –