【发布时间】:2014-09-11 18:42:58
【问题描述】:
我有一个图片上传器,可以从 HTML5 画布上传 base64 图像数据。
这适用于我尝试过的所有图像(超过 200 张),但记录时只有一张图像
PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 8457492 bytes) in Unknown on line 0
这只发生在一张图片上(IMG_2613.jpg 1600x1200 图片/jpeg 6343099 字节)。 上传此图片时,帖子数据为:
file_name:img_2613.jpg
id:55488
size:large
image_data:data:image/jpeg;base64,/9j/4dy3RXhpZg....
错误还指出它尝试分配的内存少于允许的内存
<?php
$root = $_SERVER['DOCUMENT_ROOT'];
$filteredData=substr($_POST['image_data'], strpos($_POST['image_data'], ",")+1);
$unencodedData=base64_decode($filteredData);
if ( !file_exists($root.'/_uploads/'.$_POST['id'].'/') ){
mkdir($root.'/_uploads/'.$_POST['id'].'/', 0777, true);
}
if ( !file_exists($root.'/_uploads/'.$_POST['id'].'/'.$_POST['size'].'/') ){
mkdir($root.'/_uploads/'.$_POST['id'].'/'.$_POST['size'].'/', 0777, true);
}
saveFile(0,$root,$unencodedData);
function saveFile($i,$root,$data){
if ($i == 0){
$rand = '';
} else {
$rand = $i.'_';
}
$saveLocation = '/_uploads/'.$_POST['id'].'/'.$_POST['size'].'/'.$rand.$_POST['file_name'];
if ( file_exists($root.$saveLocation) ){
saveFile($i+1,$root,$data);
} else {
file_put_contents($root.$saveLocation, $data );
echo $saveLocation;
}
}
?>
有什么我应该尝试的吗?这可能是什么原因造成的?
【问题讨论】: