Hallo,
Ik heb een probleem met een upload.php script
Dit script wil niet meer dan 1024 KB Uploaden
Kan iemand de fout ontdekken ik namelijk niet.

<?php
/**
* PHP Real Ajax Uploader
* Copyright @Alban Xhaferllari
* [email protected]
* www.albanx.com
*/
error_reporting(E_ALL ^ E_NOTICE);//remove notice for json invalidation

$uploadPath = $_REQUEST['ax-file-path'];
$fileName = $_REQUEST['ax-file-name'];
$currByte = $_REQUEST['ax-start-byte'];
$maxFileSize= $_REQUEST['ax-maxFileSize'];
$html5fsize = $_REQUEST['ax-fileSize'];
$isLast = $_REQUEST['isLast'];

//if set generates thumbs only on images type files
$thumbHeight = $_REQUEST['ax-thumbHeight'];
$thumbWidth = $_REQUEST['ax-thumbWidth'];
$thumbPostfix = $_REQUEST['ax-thumbPostfix'];
$thumbPath = $_REQUEST['ax-thumbPath'];
$thumbFormat = $_REQUEST['ax-thumbFormat'];

$allowExt = (empty($_REQUEST['ax-allow-ext']))?array():explode('|', $_REQUEST['ax-allow-ext']);
$uploadPath .= (!in_array(substr($uploadPath, -1), array('\\','/') ) )?DIRECTORY_SEPARATOR:'';//normalize path

if(!file_exists($uploadPath) && !empty($uploadPath))
{
mkdir($uploadPath, 0777, true);
}

if(!file_exists($thumbPath) && !empty($thumbPath))
{
mkdir($thumbPath, 0777, true);
}


//with gd library

function createThumbGD($filepath, $thumbPath, $postfix, $maxwidth, $maxheight, $format='jpg', $quality=75)
{
if($maxwidth<=0 && $maxheight<=0)
{
return 'No valid width and height given';
}

$gd_formats = array('jpg','jpeg','png','gif');//web formats
$file_name = pathinfo($filepath);
if(empty($format)) $format = $file_name['extension'];

if(!in_array(strtolower($file_name['extension']), $gd_formats))
{
return false;
}

$thumb_name = $file_name['filename'].$postfix.'.'.$format;

if(empty($thumbPath))
{
$thumbPath=$file_name['dirname'];
}
$thumbPath.= (!in_array(substr($thumbPath, -1), array('\\','/') ) )?DIRECTORY_SEPARATOR:'';//normalize path

// Get new dimensions
list($width_orig, $height_orig) = getimagesize($filepath);
if($width_orig>0 && $height_orig>0)
{
$ratioX = $maxwidth/$width_orig;
$ratioY = $maxheight/$height_orig;
$ratio = min($ratioX, $ratioY);
$ratio = ($ratio==0)?max($ratioX, $ratioY):$ratio;
$newW = $width_orig*$ratio;
$newH = $height_orig*$ratio;

// Resample
$thumb = imagecreatetruecolor($newW, $newH);
$image = imagecreatefromstring(file_get_contents($filepath));

imagecopyresampled($thumb, $image, 0, 0, 0, 0, $newW, $newH, $width_orig, $height_orig);

// Output
switch (strtolower($format)) {
case 'png':
imagepng($thumb, $thumbPath.$thumb_name, 9);
break;

case 'gif':
imagegif($thumb, $thumbPath.$thumb_name);
break;

default:
imagejpeg($thumb, $thumbPath.$thumb_name, $quality);;
break;
}
imagedestroy($image);
imagedestroy($thumb);
}
else
{
return false;
}
}


//for image magick
function createThumbIM($filepath, $thumbPath, $postfix, $maxwidth, $maxheight, $format)
{
$file_name = pathinfo($filepath);
$thumb_name = $file_name['filename'].$postfix.'.'.$format;

if(empty($thumbPath))
{
$thumbPath=$file_name['dirname'];
}
$thumbPath.= (!in_array(substr($thumbPath, -1), array('\\','/') ) )?DIRECTORY_SEPARATOR:'';//normalize path

$image = new Imagick($filepath);
$image->thumbnailImage($maxwidth, $maxheight);
$images->writeImages($thumbPath.$thumb_name);
}


function checkFilename($fileName, $size, $newName = '')
{
global $allowExt, $uploadPath, $maxFileSize;

//------------------max file size check from js
$maxsize_regex = preg_match("/^(?'size'[\\d]+)(?'rang'[a-z]{0,1})$/i", $maxFileSize, $match);
$maxSize=4*1024*1024;//default 4 M
if($maxsize_regex && is_numeric($match['size']))
{
switch (strtoupper($match['rang']))//1024 or 1000??
{
case 'K': $maxSize = $match[1]*1024; break;
case 'M': $maxSize = $match[1]*1024*1024; break;
case 'G': $maxSize = $match[1]*1024*1024*1024; break;
case 'T': $maxSize = $match[1]*1024*1024*1024*1024; break;
default: $maxSize = $match[1];//default 4 M
}
}

if(!empty($maxFileSize) && $size>$maxSize)
{
echo json_encode(array('name'=>$fileName, 'size'=>$size, 'status'=>'error', 'info'=>'File size not allowed.'));
return false;
}
//-----------------End max file size check


//comment if not using windows web server
$windowsReserved = array('CON', 'PRN', 'AUX', 'NUL','COM1', 'COM2', 'COM3', 'COM4', 'COM5', 'COM6', 'COM7', 'COM8', 'COM9',
'LPT1', 'LPT2', 'LPT3', 'LPT4', 'LPT5', 'LPT6', 'LPT7', 'LPT8', 'LPT9');
$badWinChars = array_merge(array_map('chr', range(0,31)), array("<", ">", ":", '"', "/", "\\", "|", "?", "*"));

$fileName = str_replace($badWinChars, '', $fileName);
$fileInfo = pathinfo($fileName);
$fileExt = $fileInfo['extension'];
$fileBase = $fileInfo['filename'];

//check if legal windows file name
if(in_array($fileName, $windowsReserved))
{
echo json_encode(array('name'=>$fileName, 'size'=>0, 'status'=>'error', 'info'=>'File name not allowed. Windows reserverd.'));
return false;
}

//check if is allowed extension
if(!in_array($fileExt, $allowExt) && count($allowExt))
{
echo json_encode(array('name'=>$fileName, 'size'=>0, 'status'=>'error', 'info'=>"Extension [$fileExt] not allowed."));
return false;
}

$fullPath = $uploadPath.$fileName;
$c=0;
while(file_exists($fullPath))
{
$c++;
$fileName = $fileBase."($c).".$fileExt;
$fullPath = $uploadPath.$fileName;
}
return $fullPath;
}

if(isset($_FILES['ax-files']))
{
//for eahc theorically runs only 1 time, since i upload i file per time
foreach ($_FILES['ax-files']['error'] as $key => $error)
{
if ($error == UPLOAD_ERR_OK)
{
$newName = !empty($fileName)? $fileName:$_FILES['ax-files']['name'][$key];
$fullPath = checkFilename($newName, $_FILES['ax-files']['size'][$key]);

if($fullPath)
{
move_uploaded_file($_FILES['ax-files']['tmp_name'][$key], $fullPath);
if(!empty($thumbWidth) || !empty($thumbHeight))
createThumbGD($fullPath, $thumbPath, $thumbPostfix, $thumbWidth, $thumbHeight, $thumbFormat);

echo json_encode(array('name'=>basename($fullPath), 'size'=>filesize($fullPath), 'status'=>'uploaded', 'info'=>'File uploaded'));
}
}
else
{
echo json_encode(array('name'=>basename($_FILES['ax-files']['name'][$key]), 'size'=>$_FILES['ax-files']['size'][$key], 'status'=>'error', 'info'=>$error));
}
}
}
elseif(isset($_REQUEST['ax-file-name']))
{
//check only the first peice
$fullPath = ($currByte!=0) ? $uploadPath.$fileName:checkFilename($fileName, $html5fsize);

if($fullPath)
{
$flag = ($currByte==0) ? 0:FILE_APPEND;
$receivedBytes = file_get_contents('php://input');
//strange bug on very fast connections like localhost, some times cant write on file
//TODO future version save parts on different files and then make join of parts
while(@file_put_contents($fullPath, $receivedBytes, $flag) === false)
{
usleep(50);
}

if($isLast=='true')
{
createThumbGD($fullPath, $thumbPath, $thumbPostfix, $thumbWidth, $thumbHeight, $thumbFormat);
}
echo json_encode(array('name'=>basename($fullPath), 'size'=>$currByte, 'status'=>'uploaded', 'info'=>'File/chunk uploaded'));
}
}
Dat is geen fout in je script, dat is een standaard instelling in php.ini. Kan je altijd aanpassen naar wens.
Koen Hollander op 03/02/2013 21:41:09

Dat is geen fout in je script, dat is een standaard instelling in php.ini. Kan je altijd aanpassen naar wens.

Misschien ook wel handig om een link te plaatsen waar hij dit moet doen.
Op deze pagina staat dat bijvoorbeeld uitgelegd.

Reageren