0

画像データ (dataurl) から新しい画像ファイルを書き込む際に問題が発生しています。1 mb 未満の画像は、 では問題ありませんfile_put_contents。ただし、ファイルが 1 MB より大きい場合。機能しません。

手順

  1. print.phpajax 経由で 1436190 の長さの DataUrl が送信されました。
  2. print.php は var$_POST['image']を取得し、$_POST['filename']
  3. print.phpでファイルをhddに保存file_put_contents($photo, $data);

print.phpスクリプトは次のとおりです。

<?php
header('Content-Type: image/jpeg');
ini_set('memory_limit', '128M');
$data=$_POST['image'];
if(!$_POST['filename']){
    exit("error");
}
list($dir,$folder,$file)=explode("/",$_POST['filename']);
$ext=strtolower(pathinfo($_POST['filename'], PATHINFO_EXTENSION));

$file=basename($file,".".$ext);
$data = base64_decode($data);

$imgRes = imagecreatefromstring($data);
if($imgRes !== false && imagejpeg($imgRes, $file,"100") === true)
    if(!is_dir($dir.'/'.$folder.'/new/')){
        mkdir($dir.'/'.$folder.'/new/',0777);
    }
    $photo=$dir.'/'.$folder.'/new/'.$file.'-'.time().".".$ext;//full url

    $saved=file_put_contents($photo, $data);
    if($saved){     
        echo "ok";
    }else{
        echo "error";
    }
imagedestroy($imgRes);
?>

私はこれを理解しようとしました。しかし、それは機能していません。コンソールには何も表示されません。または、これを達成するためのよりスマートな方法はありますfile_put_contentsか?

4

1 に答える 1