Zend Framework - обработчик загрузки Zend_File_Transfer - PullRequest
1 голос
/ 12 марта 2012

При использовании чего-то подобного в Zend:

$upload = new Zend_File_Transfer_Adapter_Http();
$upload->setDestination('/some/directory');
$upload->addValidator(x)
->addValidator(y);
$upload->receive();

Загруженный файл сначала загружается в каталог tmp, проверяется и затем перемещается в каталог «some / directory», либо он напрямую сохраняется в каталоге setDestination? Если первое, мне кажется, что это делает то же самое, что и «move_uploaded_file» после того, как он был загружен в каталог tmp.

Предлагает ли ZF какой-либо тип обработчика потока http для естественной записи файла в определенный каталог? то есть что-то похожее на nodejs или django?

1 Ответ

2 голосов
/ 12 марта 2012

Zend_File_Transfer_Adapter_Http используйте move_uploaded_file после проверки назначенными вами валидаторами.

Смотрите здесь :

public function receive($files = null)
{
    if (!$this->isValid($files)) {
        return false;
    }
    ... some code ...

    if (!move_uploaded_file($content['tmp_name'], $filename)) {
        if ($content['options']['ignoreNoFile']) {
            $this->_files[$file]['received'] = true;
            $this->_files[$file]['filtered'] = true;
            continue;
        }

        $this->_files[$file]['received'] = false;
        return false;
    }

Специальных механизмов нет, это просто оболочка над стандартной функцией

Для прямой загрузки в ваш каталог вы можете использовать что-то вроде

$input = fopen("php://input", "r");
$file = fopen("/my/directory/filename.eee", "w");
while ($data = fread($input, 1024)){
    fwrite($file, $data);
}

но в ZF вроде ничего такого нет

...