$ _ SERVER [«CONTENT_LENGTH»] возвращает ноль при загрузке файла с помощью XmlHttpRequest

У меня проблема на моей машине разработки, которая кажется изолированной от этой машины, и я не могу ее понять. У меня есть загрузчик файлов jQuery, который отправляет выбранный пользователем файл в сценарий PHP для обработки с помощью XmlHttpRequest. Сценарий отлично работает на моем MacBook Pro под управлением OSX10.6.3 с MAMP 1.9, однако на моем iMac с той же операционной системой и версией MAMP, с идентичным образом сервера, он не работает.

Я отследил причину ошибки. ошибка до свойства $ _ SERVER ["CONTENT_LENGTH"] , возвращающего 0, хотя я могу получить имя файла нормально, а все остальное, похоже, успешно выполнено с запросом. По какой-то причине он просто не может дать мне фактическую длину контента. Вот код, вызывающий проблему - рассматриваемая функция getSize () .

class qqUploadedFileXhr {
    /**
     * Save the file to the specified path
     * @return boolean TRUE on success
     */
    function save($path) {    
        $input = fopen("php://input", "r");
        $temp = tmpfile();
        $realSize = stream_copy_to_stream($input, $temp);
        fclose($input);

        if ($realSize != $this->getSize()){            
            return false;
        }

        $target = fopen($path, "w");        
        fseek($temp, 0, SEEK_SET);
        stream_copy_to_stream($temp, $target);
        fclose($target);

        return true;
    }
    function getName() {
        return $_GET['qqfile'];
    }
    function getSize() {
        if (isset($_SERVER["CONTENT_LENGTH"])){
            return (int)$_SERVER["CONTENT_LENGTH"]; //*THIS* is returning 0            
        } else {
            throw new Exception('Getting content length is not supported.');
        }      
    }   
}
9
задан mdml 5 December 2013 в 14:52
поделиться