我遇到了从图像数据(dataurl)编写新图像文件的问题。低于1 mb的图像对file_put_contents
没问题。但是如果文件大于1 mb。该功能不起作用。
程序
print.php
,长度为1436190. $_POST['image']
和$_POST['filename']
print.php
使用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
?
答案 0 :(得分:0)
首先:“他的函数返回写入文件的字节数,或者失败时返回FALSE。” 使用 - &gt; if($ saved!== FALSE)OK else error
第二名: file_put_contents - 将字符串写入文件。 然后你需要使用 - &gt; fwrite() - 二进制安全文件写入。
祝你好运!