Php 是什么阻止base64_解码处理大文件/图像
我已经实现了三个php脚本,其中两个是在stackoverflow上提出的,以解决较大图像的base64_解码不起作用的问题。现在,我已经放弃了php脚本,只是想知道需要什么样的服务器升级才能让它正常工作。这三台服务器都可以在一台服务器上以任何分辨率工作,但在另一台服务器上获得的最大分辨率约为1680 x 800(文件大小约为140 kb)。除此之外,它还会失败并输出一个空映像(文件大小为0 kb)。数据是从Flash应用程序发布的。我能看到的两台服务器之间的唯一区别是php内存限制(256 MB对128 MB)。可能是这个吗?谢谢你的建议 尝试的php脚本复制如下: 第1版:Php 是什么阻止base64_解码处理大文件/图像,php,image,post,base64,png,Php,Image,Post,Base64,Png,我已经实现了三个php脚本,其中两个是在stackoverflow上提出的,以解决较大图像的base64_解码不起作用的问题。现在,我已经放弃了php脚本,只是想知道需要什么样的服务器升级才能让它正常工作。这三台服务器都可以在一台服务器上以任何分辨率工作,但在另一台服务器上获得的最大分辨率约为1680 x 800(文件大小约为140 kb)。除此之外,它还会失败并输出一个空映像(文件大小为0 kb)。数据是从Flash应用程序发布的。我能看到的两台服务器之间的唯一区别是php内存限制(256 M
$png = base64_decode($_POST['imagedata']);
header('Content-Type: image/png');
header("Content-Disposition: attachment; filename=".$_GET['name']);
echo $png;
第2版:
$encoded = $_POST['imagedata'];
$decoded = "";
for ($i=0; $i < ceil(strlen($encoded)/256); $i++)
$decoded = $decoded . base64_decode(substr($encoded,$i*256,256));
header('Connection: Keep-alive');
header('Content-Type: image/png');
header("Content-Disposition: attachment; filename=".$_GET['name']);
echo $decoded;
可能是内存相关的问题:post大小限制或php内存使用限制
- 使用xdebug检查脚本的内存消耗:。脚本不应超过php.ini文件中的memory_limit参数:
- 检查php.ini中的post_max_大小(应大于最大图像大小)
- 检查您的web服务器是否对post数据有任何限制
- 检查您的日志:如果base64_encode编码不正确,应该会在某个地方显示错误消息李>
$data = $_POST['imagedata'];
$target = 'img_'.date('Y-m-d-H-s').'.png';
$whandle = fopen($target,'w');
stream_filter_append($whandle, 'convert.base64-decode',STREAM_FILTER_WRITE);
fwrite($whandle,$data);
fclose($whandle);
header("Content-Length: " . filesize($target));
header("Content-Disposition: attachment; filename=" . basename($target));
readfile($target);
unlink($target);