У меня проблема на моей машине разработки, которая кажется изолированной от этой машины, и я не могу ее понять. У меня есть загрузчик файлов 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.');
}
}
}