base64_decode不适用于大文件/图像

时间:2014-07-31 11:40:09

标签: php image post base64 png

我尝试使用base64_decode解码图像,除了较大的图像外,它工作正常。我想知道是否可能是由于内存限制或其他一些服务器设置。它在具有256 MB PHP内存限制的站点上以最大分辨率导出,而不是具有128 MB PHP内存限制的站点。但如果生成一个相对较小的图像需要如此多的内存,我会感到惊讶。获得的最大分辨率约为1680 x 800,文件大小约为140 kb。除此之外,它失败并输出一个空图像(文件大小为0 kb)。数据从Flash应用程序发布。

这是功能:

$png = base64_decode($_POST['imagedata']);
header('Content-Type: image/png');
header("Content-Disposition: attachment; filename=".$_GET['name']);
echo $png;

我也尝试用base64_decode替换上面的行(chunk_split($ _ POST [' imagedata'])); 但这并没有任何区别。

添加以下内容也没有区别:标题('连接:保持活着');

以下替代方案也无效。

$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;

我已经没有想法了,所以如果您对可能存在的问题有任何想法,那将非常感激。由于上面的php代码似乎适用于其他所有人,我想知道它是否可能是需要更改的特定服务器设置(除了PHP内存)。

如果它与内容编码有关,使用成功解码的小图像,网络调试面板输出以下内容:&#34;内容编码:gzip&#34; (否则,当它失败时,它输出:&#34; Content-Length:0&#34;)。

0 个答案:

没有答案