Прерывистая ошибка загрузки из веб-приложения PHP через SSL с IE7 IE8 - PullRequest
2 голосов
/ 06 мая 2010

Это большие (20-60 МБ) файлы QuickBooks. По-видимому, случайным образом пользователи IE, которые их скачивают, получают «сервер вернул недопустимый или нераспознанный ответ», и загрузка не удалась

Работает 100% времени в других браузерах.

Это через SSL. Эти загрузки являются принудительными, я пробовал все варианты заголовков, которые я видел. В настоящее время:

@ob_end_clean();
    if(ini_get('zlib.output_compression')) ini_set('zlib.output_compression', 'Off');

    header('Content-Type: application/force-download');
    header('Content-Disposition: attachment; filename="'.$file->original_name.'"');
    header("Content-Transfer-Encoding: binary");
    header('Accept-Ranges: bytes');


    header("Cache-Control: public, must-revalidate");
    header("Pragma: hack");
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

    $size = filesize($_SERVER['DOCUMENT_ROOT'].'/uploads/'.$file->name);

    header("Content-Length: ".$size);

    $new_length = $size;
    /* output the file itself */
    $chunksize = 1*(1024*1024); //you may want to change this
    $bytes_send = 0;
    if ($file_h = fopen($_SERVER['DOCUMENT_ROOT'].'/uploads/'.$file->name, 'rb'))
    {

        while
            (!feof($file_h) && 
             (!connection_aborted()) && 
             ($bytes_send<$new_length) )
        {
            set_time_limit(5);
            $buffer = fread($file_h, $chunksize);
            echo($buffer); 
            flush();
            $bytes_send += strlen($buffer);
        }
    fclose($file_h);
    }

    die();

1 Ответ

0 голосов
/ 09 декабря 2010

Как я уже видел, проблема возникает из поля заголовка Pragma, когда оно установлено в "no-cache", что, похоже, не ваша проблема Использовали ли вы какие-либо инструменты [например, Firefox Live Headers] для проверки значения поля Pragma?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...