Функция расширения PHP Uploadprogress всегда возвращает ноль, без данных загрузки - PullRequest
3 голосов
/ 15 мая 2010

Я использую php 5.3.2 с расширением uploadprogress, чтобы получить индикатор выполнения во время загрузки с использованием Zend Framework. Даже демо, предоставленное Zend, не работает. код в Zend примере -

if (isset($_GET['uploadId'])) {
set_include_path(realpath(dirname(__FILE__) . '/../../../library')
                 . PATH_SEPARATOR . get_include_path());

require_once 'Zend/ProgressBar.php';
require_once 'Zend/ProgressBar/Adapter/JsPull.php';
require_once 'Zend/Session/Namespace.php';

$data          = uploadprogress_get_info($_GET['uploadId']);
$bytesTotal    = ($data === null ? 0 : $data['bytes_total']);
$bytesUploaded = ($data === null ? 0 : $data['bytes_uploaded']);

$adapter     = new Zend_ProgressBar_Adapter_JsPull();
$progressBar = new Zend_ProgressBar($adapter, 0, $bytesTotal, 'uploadProgress');

if ($bytesTotal === $bytesUploaded) {
    $progressBar->finish();
} else {
    $progressBar->update($bytesUploaded);
}

}

uploadprogress_get_info всегда возвращает ноль. Я подумал, что с моим кодом что-то не так, поэтому я скачал рабочий образец, доступный по адресу http://labs.liip.ch/uploadprogresssimple/index.php, но даже в этом случае в uploadprogress_get_info всегда возвращался ноль.

Мои значения конфигурации uploadprogress

включена поддержка uploadprogress

Версия 1.0.1

uploadprogress.file.contents_template / tmp / upload_contents_% s

uploadprogress.file.filename_template /tmp/upt_%s.txt

uploadprogress.get_contents 1

Пока я гуглял, обнаружил, что расширение uploadprogress имеет некоторую проблему с Suhosin Patch <0.9.26 </a>, но я использую Suhosin Patch 0.9.9.1

Ответы [ 4 ]

1 голос
/ 28 мая 2010

Пока я гуглял, обнаружил, что расширение uploadprogress имеет некоторые проблемы с Suhosin Patch <0.9.26, но я использую Suhosin Patch 0.9.9.1 </p>

Я нахожусь на той же версии Suhosin и имею эту проблему. Также попробовал apc_fetch (), который suhosin также покалечил.

Какой тупой патч. Чтобы удалить его, я должен восстановить php. Ради всего святого!

1 голос
/ 25 июня 2010

Та же проблема и для меня, хотя я использую Zend_File_Transfer_Adapter для обработки загрузки. Это полезно, потому что вы также можете проверить загруженные файлы:)

Вот пара полезных методов, которые могут помочь вам, по крайней мере, в настройке вашего сервера:

Zend_File_Transfer_Adapter_Http::isApcAvailable();
Zend_File_Transfer_Adapter_Http::isUploadProgressAvailable();
1 голос
/ 15 мая 2010

Вы тестируете это локально? Я имею в виду тестирование этого на localhost? попробуйте загрузить файл на удаленный хост или протестируйте довольно большой файл (убедитесь, что вы уже сталкивались с upload_max_filesize и post_max_size).

0 голосов
/ 28 апреля 2015
  1. Запустите phpinfo, чтобы проверить, установлен ли UploadProgress и доступен ли каталог tmp для записи на сервере. Значение «uploadprogress.file.filename_template» относится к правой папке tmp в phpinfo.

  2. Вы можете запустить следующий код, чтобы проверить, доступен ли uploadprogress для записи.

    $ templateini = ini_get ("uploadprogress.file.filename_template");
    $ testid = "thisisjustatest";
    $ template = sprintf ($ templateini, $ testid);
    $ templateerror = false;
    if ($ template && $ template! = $ templateini && @touch ($ template) && file_exists ($ template)) {
    // print '('. $ templateini. 'доступен для записи. Реальный путь -'. str_replace ($ testid, "% s", realpath ($ template)). ')';
    отсоединить ($ template);
    } else {
    $ templateerror = true;
    }
    if (function_exists ("uploadprogress_get_info")) {
    if ($ templateerror) {
    напечатать 'background-color: red; "';
    print "> Проблема.";
    if ($ template == $ templateini) {
    print "uploadprogress.file.filename_template ($ templateini) не содержит% s для создания уникальных временных файлов. Пожалуйста, настройте.
    ";
    } else {
    print "$ templateini НЕ доступен для записи.
    Убедитесь, что каталог существует и доступен для записи для веб-сервера.

    Или измените параметр ini «uploadprogress.file.filename_template» на правильный путь. ";
    }
    } else {
    print 'background-color: green; "> Расширение uploadprogress установлено, и начальные проверки показывают, что все хорошо';
    }
    } else {
    ?>
    background-color: red; "> Расширение uploadprogress не установлено.
    <? php}?>

  3. Если приведенный выше код выдает ошибку, укажите правильный каталог tmp в файле php.ini. Следующая строка была добавлена ​​в файл php.ini для каталога Xampp tmp на машине с локальным хостом Windows. uploadprogress.file.filename_template = C: \ xampp \ tmp \ some_name_% s.txt

  4. Теперь запустите демонстрацию Zend, которая должна работать, или выполните следующее, чтобы получить var_dump вручную. var_dump (uploadprogress_get_info ($ _ GET [ 'uploadId']));

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