2012-03-12 3 views
1

При использовании что-то вроде этого в Zend:Zend Framework - Zend_File_Transfer Загрузить Handler

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

ли загруженный файл загружен первый в каталог TMP, заверенной, а затем переехал в «какой-то каталог /» или он непосредственно сберегать в каталог setDestination? Если первое, мне кажется, что он делает то же самое, что и «move_uploaded_file» после того, как он был загружен в каталог tmp.

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

ответ

2

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

Посмотрите here:

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 нет ничего подобного

+0

Я подумал, что для этого может быть какая-то обертка, но на данный момент я предполагаю, что у меня есть обычный хороший PHP. – Tony

Смежные вопросы