Загрузить проблему ограничения размера

Я использую uploadify в проекте со следующим скриптом:

$(document).ready(function() {

    $("#uploadify").uploadify({
        'uploader': '_assets/flash/uploadify.swf',
        'script': 'uploadify.php',
        'cancelImg': '_assets/images/nav/cancel.png',
        'folder': 'uploads',
        'queueID': 'fileQueue',
        'auto': true,
        'multi': true,
        'sizeLimit': 20971520,
        'fileExt': '*.eps;*.jpg;*.pdf;*.psd;*.mov;*.ai;*.png;*.doc;*.docx;*.ppt;*.pptx;*.indd;*.bmp;*.dwg;*.pct;*.txt;*.wmv',
        'fileDesc': 'We accept graphics and text files only!',
        'buttonImg': '_assets/images/nav/uploadbutton.png',
        'wmode': 'transparent',
        'width': 143,
        'height': 53,
        onAllComplete: function() {
            $('#forupload').hide();
            $('#confirm').fadeIn();
        }
    });

});

Файл php, к которому выполняется запрос, это uploadify.php:

    error_reporting(E_ALL);


if (!empty($_FILES)) {
    $tempFile = $_FILES['Filedata']['tmp_name'];
    $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
    $targetFile =  str_replace('//','/',$targetPath) . $_FILES['Filedata']['name'];

    // $fileTypes  = str_replace('*.','',$_REQUEST['fileext']);
    // $fileTypes  = str_replace(';','|',$fileTypes);
    // $typesArray = split('\|',$fileTypes);
    // $fileParts  = pathinfo($_FILES['Filedata']['name']);

    // if (in_array($fileParts['extension'],$typesArray)) {
        // Uncomment the following line if you want to make the directory if it doesn't exist
        // mkdir(str_replace('//','/',$targetPath), 0755, true);

        move_uploaded_file($tempFile,$targetFile);
        echo "1";



    //Send confirmation email

    require_once('_mailClasses/class.phpmailer.php');
    include_once("_mailClasses/class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded

    $mail             = new PHPMailer();

    $body             = 'There is a new online order. Please check your order folder.';
    //$body             = eregi_replace("[\]",'',$body);

    $mail->IsSMTP(); // telling the class to use SMTP
    $mail->Host       = "mail.splashoflondon.com";      // SMTP server
    $mail->SMTPDebug  = 2;                              // enables SMTP debug information (for testing)
    // 1 = errors and messages
    // 2 = messages only
    $mail->SMTPAuth   = true;                           // enable SMTP authentication
    $mail->Host       = "mail.splashoflondon.com";      // sets the SMTP server
    $mail->Port       = 25;                         // set the SMTP port for the GMAIL server
    $mail->Username   = "[email protected]";    // SMTP account username
    $mail->Password   = "blablabla";                        // SMTP account password

    $mail->SetFrom('[email protected]', 'Splash of London');

    $mail->AddReplyTo("[email protected]","Adolphus");

    $mail->Subject    = "Online Order";

    $mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test

    $mail->MsgHTML($body);

    $address = "[email protected]";
    $mail->AddAddress($address, "Splash Order Managment");
    $mail->Send();

    if(!$mail->Send()) {
        echo "Mailer Error: " . $mail->ErrorInfo;
    } else {
        echo "Message sent!";
    }

}

Проблема в том, что он игнорирует ограничение размера в 20 МБ и не позволяет пользователю загружать файлы размером более 1.something MB.

Любая помощь будет принята с благодарностью.

Это мой текущий php.ini:

    register_globals = Off

post_max_size = 20M
upload_max_filesize = 20M


[Zend]

zend_optimizer.optimization_level=15

zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-2.5.10

zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-2.5.10

zend_optimizer.version=2.5.10a

zend_extension = /usr/local/lib/ioncube_loader_lin_4.4.so



zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so

zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so

person Ali Habibzadeh    schedule 10.08.2010    source источник
comment
@XGreen: какой веб-сервер вы используете? Например, в apache и nginx есть настройки конфигурации для максимального размера POST.   -  person ngoozeff    schedule 10.08.2010
comment
Я использую Apache от HOSTPAPA, канадского провайдера. На CPANEL домена в разделе конфигурации php написано: File Uploads upload_max_filesize Максимально допустимый размер загружаемых файлов. 64М   -  person Ali Habibzadeh    schedule 10.08.2010
comment
Как изменить параметр конфигурации для максимального размера сообщения? Нужно ли добавлять .htaccess в корень проекта? каков правильный синтаксис, который мне нужно написать?   -  person Ali Habibzadeh    schedule 10.08.2010
comment
В apache этот параметр называется LimitRequestBody. См., например, 512 кбит/с .com/2008/03/10/   -  person ngoozeff    schedule 10.08.2010
comment
Я добавил свой php.ini, где я добавил директивы максимального размера и размера загрузки, но это не повлияло   -  person Ali Habibzadeh    schedule 10.08.2010
comment
Я попытался добавить php_value upload_max_filesize 20M php_value post_max_size 20M php_value max_execution_time 200 php_value max_input_time 200 в свой .htacess, но это приводит к сбою моего сервера и отображению страницы внутренней ошибки   -  person Ali Habibzadeh    schedule 10.08.2010


Ответы (1)


Вы можете попробовать подписаться на обработчик onError в вашем вызове uploadify. Что-то вроде этого, после обработчика onAllComplete...

onError: function (a, b, c, d) {
     if (d.status == 404)
        alert('Could not find upload script.');
     else if (d.type === "HTTP")
        alert('error '+d.type+": "+d.status);
     else if (d.type ==="File Size")
        alert(c.name+' '+d.type+' Limit: '+Math.round(d.sizeLimit/1024)+'KB');
     else
        alert('error '+d.type+": "+d.text);
}
person ngoozeff    schedule 11.08.2010
comment
Спасибо, хотя d.sizeLimit не определено - person jfoucher; 17.08.2011